비 Eclipse 환경 (다른 기본 java ide 용 플러그인)에서 jdt의 AST 생성 기능을 사용하려고합니다. 나는 이클립스 내부에서 그것을 실행하면 내 프로그램이 제대로 AST를 생성,하지만 난 IDE에서 플러그인을 테스트 할 때 나는이 예외가 얻을 :비 Eclipse 환경에서 Eclipse JDT SDK를 사용하여 AST를 생성하는 동안 예외가 발생했습니다.
Exception in thread "AWT-EventQueue-0" java.lang.NoSuchFieldError: ignoreMethodBodies
at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse(CompilationUnitResolver.java:491)
at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1200)
at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java :807)
at mytreetest.TreeMaker.buildTree(Unknown Source)
...
(further stack trace)
...
내가 사용했던 코드는 아주 기본입니다 :
코드 :
ASTParser parser = ASTParser.newParser(AST.JLS4);
String src = readFile(filePath);
parser.setSource(src.toCharArray());
parser.setKind(ASTParser.K_COMPILATION_UNIT);
Map<String, String> options = JavaCore.getOptions();
JavaCore.setComplianceOptions(JavaCore.VERSION_1_7, options);
parser.setCompilerOptions(options);
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
나는 org.eclipse.jdt.core.dom.CompilationUnitResolver과 org.eclipse.jdt.internal.compiler.impl.CompilerOptions의 소스 코드를 갔다. CompilerOptions에는 ignoreMethodBodies라는 공개 부울 필드가 있습니다.
이 오류의 원인은 무엇입니까?
도와주세요. 여기
내가 포함 한 일식 jar 파일은 다음과 같습니다org.eclipse.core.contenttype_3.4.100.v20110423-0524.jar
org.eclipse.core.jobs_3.5.100.v20110404.jar
org.eclipse.core.resources_3.7100.v20110510-0712.jar
org.eclipse.core.runtime_3.7.O.v20110110.jar
org.eclipse.equinoxcommon_3.6.O.v20110523.jar
org.eclipse.equinox.preferences_3.4.1.R37x_v20110725.jar
org.eclipse.jdt.compiler.apt_1.O.400.v0110816-0800.jar
org.eclipse.jdt.compiler.tooLl.O.100.v_B76_R37x.jar
org.edipse.jdt.core_3.7.1.v_B76_R37x.jar
org.eclipse.jface3.7.0J20110522-1430.jar
org.eclipse.osgi_3.7.1.R37x_v20110808-1106.jar
org.eclipse.osgi.utiL3.2.200.v20110110.jar
org.eclipse.text3.5101 .r371y20110810-O800jar
UPDATE :
나는 이것에 대한 수정 프로그램을 발견했습니다. 이 코드를 실행하고 있던 java-ide는 ecj를 사용하고있었습니다. 문제는 ecj.jar이 플러그인에 포함 된 jdt 코어 모듈과 충돌하고 있다는 것입니다. IDE의 ecj를 jdt-core (org.eclipse.jdt.core_XX.XX.jar 및 나머지 jar 파일)로 바꾸고 클래스 패스를 업데이트하면 문제가 해결됩니다.
전체 스택 추적은 http://stackoverflow.com/questions/9961588/java-lang-nosuchfielderror-ignoremethodbodies-exception-while-creating-ast의 것과 비슷합니까? –
예, 이클립스 포럼 http://www.eclipse.org/forums/index.php/m/835729/#msg_835729에 게시 한 후 수정 사항을 발견했습니다. –