试图使用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