现在,我使用scala开发了一个eclipse插件。
在这个插件中,我想使用由twitter创建的util-eval库。
(https://github.com/twitter/util/tree/master/util-eval)
我尝试使用'sbteclipse'构建这个库,得到了jar(例如util-core-5.3.13.jar和util-eval-5.3.13),并添加了以下构建模式:
<classpathentry exported="true" kind="lib" path="jars/util-core-5.3.13.jar"/>
<classpathentry exported="true" kind="lib" path="jars/util-eval-5.3.13.jar"/>
以下是测试代码示例:
class SampleTest {
@Test
def evalTest(): Unit = {
val ret = (new com.twitter.util.Eval).apply[(Int => Int)]("{(x:Int) => x*2}")
println(ret(4))
}
}
以Run身份运行时 - &gt; JUnit Test,它可以工作(显示“8”)
但是,当以Run身份运行时 - &gt; EclipseApplication - &gt; (执行插件),它不起作用,我有一些错误。 这是一个插件(处理程序)代码:
class SampleHandler extends AbstractHandler{
def execute(event: ExecutionEvent): Object = {
val ret = (new com.twitter.util.Eval).apply[(Int => Int)]("{(x:Int) => x*2}")
println(ret(4))
return null:
}
}
,这是一条错误消息:
java.lang.RuntimeException: Unable lo load scala interpreter from classpath (scala-compiler jar is missing?)
at com.twitter.util.Eval.liftedTree1$1(Eval.scala:77)
at com.twitter.util.Eval.com$twitter$util$Eval$$compilerPath(Eval.scala:73)
at com.twitter.util.Eval$StringCompiler.<init>(Eval.scala:429)
at com.twitter.util.Eval.compiler(Eval.scala:110)
at com.twitter.util.Eval.compile(Eval.scala:219)
at evaltest.handlers.SampleHandler.execute(SampleHandler.scala:25)
我收到了一些其他错误消息,显示为'red'字体:
when processing type mungers evaltest.handlers.SampleHandler
when processing type mungers
when weaving
[Xlint:cantFindType]
[eval_test_plugin] error can't determine modifiers of missing type
org.eclipse.jdt.ui.SharedASTProvider$WAIT_FLAG
when processing type mungers evaltest.handlers.SampleHandler
when processing type mungers
when weaving
...
简单地说,我想创建一个插件来解释从插件用户输入的scala脚本并执行脚本。 为了实现这一点,'eval'功能至关重要。
所以,请让我知道一些解决方案。
答案 0 :(得分:0)
检查org.scala-ide.scala.compiler
文件中Require-Bundle
下的MANIFEST.MF
是否依赖。