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

com.sun.script.java.JavaCompiler调用不存在的方法,java,scripting,quartz-scheduler,Java,Scripting,Quartz Scheduler,尝试使用quartz 1.8.3作为脚本执行Java代码。我使用的是从ApacheBSF3.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/ret

尝试使用quartz 1.8.3作为脚本执行Java代码。我使用的是从ApacheBSF3.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)
我无法确定可能遗漏了什么


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

Apache Commons BSF在Java6中不再一致+

ApacheBSF3.x包括JSR-223 javax.script的实现 并在Java1.4和Java1.5上运行。Java1.6包括javax.script作为 标准注意,尽管实现遵循JSR-223 规范,但尚未针对JSR-223 TCK进行测试。阿帕奇 因此,BSF 3.x不能严格地描述为兼容的 然而,JSR-223的实施被认为是完整的


引用自

可能重复的@biggay而非重复。这个问题问如何使用那个API,这个它找不到那个API。我没有使用BSF API。我正在使用Java1.6中的javax.script。我确实使用了BSF3.1中的机制下载并组装了一个装满第三方脚本引擎的jar。