試圖使用quartz 1.8.3作爲腳本執行Java代碼。我正在使用從Apache BSF 3.1版本打包的BSF語言罐。 JVM版本是1.6.0_29。com.sun.script.java.JavaCompiler調用不存在的方法
當它試圖評估該腳本,我得到:
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)
我茫然地確定什麼可能會丟失。
更新:爲了使這更難追查,這是間歇性的。如果我將作業安排爲每小時運行一次,則可能會因該異常而失敗三次,然後執行兩次,然後再次失敗。
可能重複[如何當我使用javax.tools.JavaCompiler編譯源設置CLASSPATH?](http://stackoverflow.com/questions/1563909/how-to- set-classpath-when-i-use-javax-tools-javacompiler-compile-the-source) – bigGuy 2014-10-09 20:26:18
@bigGuy不是一個笨蛋。該問題詢問如何使用該API,它無法找到該API。 – JasonMArcher 2014-10-09 20:55:14