Frage

Ich bin Kompilieren dynamisch Code in meiner Client-Anwendung. Wenn ich die Anwendung mit Java Web Start starten erhalte ich eine Ausnahme. Die Ausnahme tritt nur auf, wenn sie durch Java Web Start ausgeführt wird.

//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);
                     ^

Die PropertyBag oben durch die JNLPClassloader bereitgestellt werden sollten als es ist ein Teil von einem der Dateien, die von JWS heruntergeladen werden

Der Code, der das Problem verursacht sieht wie folgt aus.

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;
}

wird jede Hilfe sehr geschätzt!

War es hilfreich?

Lösung

Wie es derzeit steht, werden Sie den Code auf dem Server kompilieren müssen. Der Server sollte keinen Code dienen, die Cross-Site-Angriffe ermöglichen könnte, so sehr vorsichtig sein. Der Client kann dann URLClassLoader.newInstance verwenden, um es zu laden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top