2

現在、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 -> JUnit Test で実行すると動く(「8」と表示)

しかし、実行 -> EclipseApplication -> (プラグインの実行) として実行すると、機能せず、いくつかのエラーが発生しました。プラグイン (ハンドラー) コードは次のとおりです。

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)

「赤」のフォントで表示されるその他のエラー メッセージが表示されました。

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」機能が不可欠です。

ということで、どなたか解決策を教えてください。

4

1 に答える 1

0

org.scala-ide.scala.compilerファイル内で依存関係があるかどうかを確認Require-BundleしてくださいMANIFEST.MF

于 2012-11-12T07:52:58.017 に答える