Come posso accedere alle classi caricate da Java Web Start quando dinamicamente la compilazione di codice?

StackOverflow https://stackoverflow.com/questions/100737

Domanda

Io sono dinamicamente la compilazione di codice nella mia applicazione client.Quando faccio partire l'applicazione con Java Web Start ottengo un'eccezione.L'eccezione si verifica solo quando viene eseguito tramite 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 di cui sopra dovrebbe essere stato fornito dal JNLPClassloader come fa parte di uno dei file che vengono scaricati da JWS

Il codice che causa il problema simile a questo.

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

Qualsiasi aiuto sarà molto apprezzato!

È stato utile?

Soluzione

Come si trova attualmente, dovrete compilare il codice sul server.Il server non deve servire qualsiasi codice che potrebbe consentire di cross attacchi al sito, in modo da essere molto attenti.Il cliente può quindi utilizzare URLClassLoader.newInstance a caricare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top