com.sun.script.java.JavaCompiler调用一个不存在的方法

时间:2014-10-09 20:25:05

标签: java scripting quartz-scheduler

尝试使用quartz 1.8.3将Java代码作为脚本执行。我正在使用从Apache BSF 3.1版本打包的BSF语言jar。 JVM版本是1.6.0_29。

当它试图评估我得到的脚本时:

java.lang.NoSuchMethodError: javax.tools.JavaCompiler.getTask(Ljava/io/Writer;Ljavax/tools/JavaFileManager;Ljavax/tools/DiagnosticListener;Lnet/sourceforge/retroweaver/runtime/java/lang/Iterable;Lnet/sourceforge/retroweaver/runtime/java/lang/Iterable;Lnet/sourceforge/retroweaver/runtime/java/lang/Iterable;)Ljavax/tools/JavaCompiler$CompilationTask;
    at com.sun.script.java.JavaCompiler.compile(JavaCompiler.java:105)
    at com.sun.script.java.JavaScriptEngine.parse(JavaScriptEngine.java:114)
    at com.sun.script.java.JavaScriptEngine.eval(JavaScriptEngine.java:81)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)
    at foo.quartzutils.ScriptJob.evalScript(ScriptJob.java:106)
    at foo.quartzutils.ScriptJob.execute(ScriptJob.java:54)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)

我无法确定可能遗漏的内容。

更新:为了使追踪更加困难,这是间歇性的。如果我将作业安排为每小时运行一次,那么该异常可能会失败三次,工作两次,然后再次失败。

1 个答案:

答案 0 :(得分:0)

Apache Commons BSF在Java6 +中不再一致

  

Apache BSF 3.x包含JSR-223(javax.script)的实现   并在Java 1.4和Java 1.5上运行。 (Java 1.6包含javax.script as   标准。)请注意,虽然实现遵循JSR-223   规格,尚未针对JSR-223 TCK进行测试。阿帕奇   因此,BSF 3.x不能严格地描述为兼容的   JSR-223的实施,但据信是完整的。

来自Apache website