1
클라이언트 응용 프로그램에서 코드를 동적으로 컴파일하고 있습니다. Java Web Start로 응용 프로그램을 시작하면 예외가 발생합니다. 이 예외는 Java Web Start를 통해 실행될 때만 발생합니다.코드를 동적으로 컴파일 할 때 Java Web Start에서로드 한 클래스에 어떻게 액세스합니까?
//The exception
evolver.core.model.change.execution.ExecutionException: Compilation failed!
DynamicComparator.java:2: package evolver.core.model.i does not exist
import evolver.core.model.i.IDefaultObject;
^
DynamicComparator.java:9: cannot find symbol
symbol : class PropertyBag
location: class DynamicComparator
PropertyBag b2 = new PropertyBag(dob2);
^
위의 PropertyBag은은이 JWS
문제는 다음과 같습니다 일으키는 코드에 의해 다운로드되는 파일 중 하나의 일부입니다 으로 JNLPClassLoader를에 의해 제공되어 있어야합니다.
public static int compile(String javaFileName) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
PrintWriter w = new PrintWriter(os);
int res = com.sun.tools.javac.Main.compile(new String[]{"-d", "./", javaFileName}, w);
if (res != 0)
throw new ExecutionException("Compilation failed!" + "\n\n" + os.toString());
return res;
}
도움이 될 것입니다!