2013-05-16 2 views
0

내가 JavaCompiler이 클래스를 컴파일하고 그것을 나에게 내가 컴파일 통과 String 경우 컴파일 오류가 제공이됩니다. 컴파일 할 수 있도록하려면 어떻게해야합니까?Compiler.getTask 오류 컴파일러

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 

String program = code; 
Iterable<? extends JavaFileObject> fileObjects; 
fileObjects = getJavaSourceFromString(program); 

String[] options = new String[]{"-d", contextClass.getPath()+"temp/"+pathJar+"/", 
"-classpath",contextClass.getBasePath()+"WEBINF/lib/lib1.jar; 
"+contextClass.getBasePath()+"WEB-INF/lib/lib2.jar"}; 



compiler.getTask(null, null, null, Arrays.asList(options), null, fileObjects).call(); 

아직 공개 중이십니까?

편집 : 오류 문자열 : ///code.java : 16 : 클래스 이름이 공개 클래스는 제출 className.java

에 선언해야하지만 이름이 같은

+0

'classNeed'도 공개로 설정 하시겠습니까? –

+1

* "컴파일 오류"* 항상 오류 및 예외 출력을 복사/붙여 넣기하십시오. –

+0

classNeed는 공개입니다. – user2362167

답변

1

공공 클래스입니다 자신의 파일에서 선언해야합니까?

나는 언어 사양에 따라 컴파일러가 입력이 올바르게 명명 된 .java 파일에서 왔다고 생각하지 않는다고 생각합니다. (공용 클래스는 자체 파일에 정의되어야합니다.)

경로가 잘못되었을 수 있습니다. 자바 컴파일러는 Java 파일/선언 된 패키지와 클래스 이름이 일치하지 않는 경우이를 거부합니다.

+1

만약 디버깅을 보았 더라면 className.java code.java를 유지해야했습니다. 미안 뉴비 실수! – user2362167