2014-10-09 2 views
0

quartz 1.8.3을 사용하여 Java 코드를 스크립트로 실행하려고 시도했습니다. Apache BSF 3.1 빌드에서 패키지화 된 BSF 언어 jar를 사용하고 있습니다. 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) 

나는 가능성이 누락 될 수 있는지 결정하기 위해 손실에 있어요.

업데이트 : 추적하기가 더욱 어려워지기 때문에 간헐적입니다. 작업을 한 시간에 한 번 실행하도록 예약하면 해당 예외로 세 번 실패 할 수 있습니다. 두 번 작동 한 다음 다시 실패 할 수 있습니다.

+0

가능 중복 된 [I가 javax.tools.JavaCompiler이 소스를 컴파일 사용할 때 클래스 경로를 설정하는 방법?] (http://stackoverflow.com/questions/1563909/how-to- set-classpath-when-i-use-javax-tools-javacompiler-source 컴파일) – bigGuy

+0

@bigGuy 속임수가 아님. 그 질문은 API를 사용하는 방법을 묻습니다.이 API는이 API를 찾을 수 없습니다. – JasonMArcher

답변

0

아파치 커먼즈 BSF는 +

아파치 BSF 3.x를가 JSR-223 (javax.script의) 의 구현을 포함하고 자바 1.4 자바 1.5에서 실행 더 이상 Java6에 일치하지 않습니다. Java 1.6에는 javax.script가 표준으로 포함되어 있습니다. 구현은 JSR-223 사양을 따르지 만 JSR-223 TCK에 대해서는 테스트되지 않았습니다. Apache 따라서 BSF 3.x는 호환 가능한 JSR-223 구현으로 엄격하게 설명 될 수는 없지만 완전하다고 판단됩니다.

견적에서 Apache website

+0

BSF API를 사용하지 않습니다. Java 1.6에서 javax.script를 사용하고 있습니다. BSF 3.1의 기계를 사용하여 타사 스크립팅 엔진으로 가득 찬 항아리를 다운로드하고 어셈블했습니다. – user2458080

관련 문제