5

.Java 파일을 CompilationUnit에로드하려면 어떻게해야합니까? 예를 들어, 현재 프로젝트에 A.java 파일이 있다고 가정 해 봅시다. CompilationUnit에로드하고 ASTParser에 전달하고 싶습니다. 이 경우에는 AST에서 바인딩 정보를 얻지 못하기 때문에 일반 텍스트로로드하는 것은 옵션이 아닙니다.Eclipse에서 .java 파일에서 CompilationUnit을 만듭니다.

답변

9

jdteclipse core 라이브러리를 사용하여 프로젝트를로드 할 수 있습니다.

다음 코드를 사용하면 작업 영역의 모든 프로젝트를로드 할 수 있습니다.

IWorkspace workspace = ResourcesPlugin.getWorkspace(); 
IWorkspaceRoot root = workspace.getRoot(); 
// Get all projects in the workspace 
IProject[] projects = root.getProjects(); 

그런 다음 패키지와 차례로 java 파일을 가져올 수 있습니다.

IPackageFragment[] packages = JavaCore.create(project).getPackageFragments(); 
IPackageFragment mypackage = packages.get(0); // implement your own logic to select package 
ICompilationUnit unit = mypackage.getCompilationUnits(); 

은 그럼 당신은

ASTParser parser = ASTParser.newParser(AST.JLS3); 
parser.setKind(ASTParser.K_COMPILATION_UNIT); 
parser.setSource(unit); 
parser.setResolveBindings(true); 
CompilationUnit cUnit = parser.createAST(null); 

이 CompilationUnit 개체가 ASTParser에 전달 될 수있는 CompilationUnit을 받고이 ICompilationUnit 객체를 사용할 수 있습니다.

+0

Eclipse 프로젝트에서만 작동합니까? 즉, Java 프로젝트에서는 작동하지 않습니다. – bellpeace

+0

jar 파일을 사용하여 Java 프로젝트에서 JDT를 사용할 수 없습니다. JDT를 사용하려면 프로그램을 플러그인 (또는 적어도 OSGi 지원 응용 프로그램)으로 실행해야합니다. –

+0

좋아, 그래서 이클립스 프로젝트에 대해서만이 접근 방식으로. java 파일을 CompilationUnit에로드 할 수있다. 참고로, setSource (char []) 및 setEnvironment 메소드를 사용하여 이클립스 프로젝트 외부에서 JDT를 사용할 수 있습니다. (버전 3.6부터) – bellpeace