Scala在eclipse插件开发中的评价

时间:2012-11-12 07:31:58

标签: eclipse scala plugins eval

现在,我使用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'功能至关重要。

所以,请让我知道一些解决方案。

1 个答案:

答案 0 :(得分:0)

检查org.scala-ide.scala.compiler文件中Require-Bundle下的MANIFEST.MF是否依赖。