2013-03-20 2 views
4

У меня есть проблемы из-за длины файла, что составители дают одному из моих замыканий внутри класса Scala, с помощью Scala 2.9.2Scala CLOSURES имя файла

CurrencyInitializer $$ anonfun $ ком $ Gottex $ gottware $ server $ startup $ initializers $ impl $ currency $ CurrencyInitializer $$ updateDepositEquivalentBonds $ 1.class

Проблема с этим именем файла заключается в том, что я загружаю папку, содержащую все мои скомпилированные классы через сервер Linux через SSH gui, и это выходит из строя.

private def updateDepositEquivalentBonds(currency: Currency) { 

    val depositEquivalentBonds = gottwareDataSource.space.readAllWithCurrency(classOf[DepositEquivalentBondImpl], currency) 
    for (depositEquivalentBond <- depositEquivalentBonds) depositEquivalentBond.updateFromDeposit(gottwareDataSource.space) 
    if (depositEquivalentBonds.length > 0) { 
     gottwareDataSource.space.writeMultiple(depositEquivalentBonds, Lease.FOREVER, 
     UpdateModifiers.UPDATE_OR_WRITE | UpdateModifiers.NO_RETURN_VALUE) 
     gottwareDataSource.space.writeMultiple(AskBidSpread.newInstances(depositEquivalentBonds.toArray[SecurityImpl]), Lease.FOREVER, UpdateModifiers.UPDATE_OR_WRITE | UpdateModifiers 
     .NO_RETURN_VALUE) 
} 
    } 

Удивительно, но это код, который производит длинное имя файла. Есть ли что-то, что я могу сделать в компиляторе, чтобы это не произошло?

+3

ли вам на самом деле нужно загрузить файл .class? Не будет ли файл .jar? – jpalecek

+0

Невозможно контролировать, как компилятор генерирует внутренние имена классов для таких вещей, как литералы функций. (И помните, что все замыкания являются функциональными литералами, но не все функциональные литералы являются закрытием. Терминология имеет значение ... Хотя не для этой конкретной проблемы ...) –

ответ

4

Установите параметр max-classfile-name на вызов компилятора scala, чтобы сократить имена файлов.

В POM, чтобы получить имена файлов длиной не более 144 символов (Crypt FS предельный размер) конфигурация выглядит как

<plugin> 
    <groupId>org.scala-tools</groupId> 
    <artifactId>maven-scala-plugin</artifactId> 
    <configuration> 
     <scalaVersion>2.9.2</scalaVersion> 
     <args> 
       <arg>-Xmax-classfile-name</arg> 
       <arg>144</arg> 
     </args> 
    </configuration> 
</plugin> 

источник Compiler установка ссылки link (устареет)

Смежные вопросы