簡體   English   中英

使用sbt-native-packager和ScalaFXML進行宏擴展時發生異常

[英]Exception during macro expansion with sbt-native-packager and ScalaFXML

在github上一個小項目 ,我創建該項目是為了探索ScalaFx以及我想在更大的項目上使用的其他一些功能。 目前,它只包含一個子項目,這是一個使用ScalaFX和ScalaFXML編寫的簡單計算器。

使用SBT命令Calculator calculator/run可以構建並正常calculator/run

我現在正嘗試使用sbt-native-packager對其進行打包。 我添加了一個名為“ exemple-cli”的簡單項目(來自sbt-native-packager的文檔),該項目可以用exemple-cli/stage進行打包(我在exemple-cli / target / universal / stage中得到了預期的結果)。 但是,當我運行命令calculator/stage ,出現以下錯誤:

> calculator/stage
[info] Main Scala API documentation to /Users/guillaumegaly/IDEAWorkspace/scalafx-trials/calculator/target/scala-2.11/api...
[info] Packaging /Users/guillaumegaly/IDEAWorkspace/scalafx-trials/calculator/target/scala-2.11/calculator_2.11-0.0.1-SNAPSHOT.jar ...
[info] Wrote /Users/guillaumegaly/IDEAWorkspace/scalafx-trials/calculator/target/scala-2.11/calculator_2.11-0.0.1-SNAPSHOT.pom
[info] Done packaging.
Compiling ScalaFXML proxy class for CalculatorController
[error] /Users/guillaumegaly/IDEAWorkspace/scalafx-trials/calculator/src/main/scala/guilgaly/fxtest/calculator/CalculatorController.scala:13: exception during macro expansion: 
[error] java.lang.UnsupportedOperationException: Position.point on NoPosition
[error]     at scala.reflect.internal.util.Position.fail(Position.scala:17)
[error]     at scala.reflect.internal.util.UndefinedPosition.point(Position.scala:95)
[error]     at scala.reflect.internal.util.UndefinedPosition.point(Position.scala:90)
[error]     at scala.reflect.internal.Positions$class.wrappingPos(Positions.scala:42)
[error]     at scala.reflect.internal.SymbolTable.wrappingPos(SymbolTable.scala:16)
[error]     at scala.reflect.internal.Positions$class.wrappingPos(Positions.scala:37)
[error]     at scala.reflect.internal.SymbolTable.wrappingPos(SymbolTable.scala:16)
[error]     at scala.reflect.internal.TreeGen.mkTemplate(TreeGen.scala:378)
[error]     at scala.reflect.internal.ReificationSupport$ReificationSupportImpl$SyntacticClassDef$.apply(ReificationSupport.scala:341)
[error]     at scala.reflect.internal.ReificationSupport$ReificationSupportImpl$SyntacticClassDef$.apply(ReificationSupport.scala:326)
[error]     at scalafxml.core.macros.sfxmlMacro$.impl(sfxmlMacro.scala:162)
[error] @sfxml
[error]  ^
[info] No documentation generated with unsuccessful compiler run
[error] one error found
[error] (calculator/compile:doc) Scaladoc generation failed
[error] Total time: 1 s, completed 29 août 2014 21:39:04

顯然,ScalaFXML用來為控制器生成代理類的宏存在錯誤,但這僅在使用sbt-native-packager進行打包時發生,而不僅僅是在使用SBT進行編譯時發生。 ?

看起來像SI-8771,它是從2.11.1到2.11.2的回歸。 解決方法是降級到2.11.2或根據對https://issues.scala-lang.org/browse/SI-8771的注釋中提供的詳細信息更改宏的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM