Compiler-Fehler Providing JavaCompiler within Projekt

specialize

Bekanntes Mitglied
Grüß euch,

gibt es eine Möglichkeit, den JavaCompiler in einem *.jar mitzuliefern?

Im Jar funktioniert er nämlich nicht und wirft:

Code:
java.lang.NullPointerException

bei Zeile 2 des Codes

Java:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);

Oder kennt jemand eine andere Lösung?

Die Apache common JCI hat bei mir immer einen NPE aufgerufen und ist aus meiner Sicht unzureichend dokumentiert.
 
Zuletzt bearbeitet:
T

tuxedo

Gast
War da nicht so was dass die Compiler-Bezogenen Klassen nur dann funktionieren, wenn man kein nacktes JRE, sondern ein JDK benutzt um die Anwendung auszuführen?!

In der eigenen JAR ist der Compiler jedenfalls nicht drin...
 

Michael...

Top Contributor
muss der Kompiler nicht auf dem entsprechenden Rechner installiert sein, damit das funktioniert? Nur Mitliefern reicht vermutlich nicht aus.
 
T

tuxedo

Gast
Der Compiler dürfte in der "tools.jar" des JDKs liegen. Und afaik steht in der Lizenz-Infos zum (Sun/Oracle) JDK geschrieben, dass man dieses nicht "verteilen" darf.

Eventuell ist das mit dem OpenJDK anders. Musst du mal schauen.

Oder eben das Apache-Teil nochmal genauer anschauen...
Oder eben das JDK voraussetzen...
 

specialize

Bekanntes Mitglied
Harmony ist tot. Leider.
Harmony, war das ein Programmierer?

Oder eben das Apache-Teil nochmal genauer anschauen...

Ich hab eine Frage zu dem Tool:

The current implementation supports compilation via the following compilers:

eclipse
janino
groovy
javac
rhino

Wo ist der unterschied zwischen eclipse und javac?

Auch: hat jemand eine gute Dokumentation oder simple Beispiele des JCI im Einsatz?

Wie gesagt, dieser code ruft einen NPE bei mir (auch mit javac statt eclipse):

Java:
JavaCompiler compiler = new JavaCompilerFactory().createCompiler("eclipse");
CompilationResult result = compiler.compile("Prog.java", new FileResourceReader("<...>/Path"), new FileResourceStore("<...>/Target"));
 
G

Gast2

Gast
Selbst wenn du den Compiler mitliefern dürftest (Was du nicht darfst, da in der lizenz irgendwo steht, dass nur unveränderte und komplett Pakete der JRE mitgeliefert werden dürfen und damit afaik gar kein JDK und schon gar kein Teil des JDK's) würden ja noch die ganzen Referenzierten Files ect. fehlen und und und.

Setze lieber wie bereits vorgeschlagen eine Installation des JDK vorraus oder verzichte auf die Compiler Sachen sofern das möglich ist!

Btw:
[OT]
Harmony ist tot. Leider.
Harmony, war das ein Programmierer?
Made my day! :lol:
[/OT]
 
G

Gastredner

Gast
Das hier:
The current implementation supports compilation via the following compilers:

eclipse
janino
groovy
javac
rhino
klingt für mich eher so, als wäre JCI lediglich eine Schnittstelle zu den gelisteten Compilern und liefert diese selbst NICHT mit. In diesem Fall bestünde dein Problem natürlich weiterhin (sprich, du bräuchtest immer noch ein JDK oder müsstest gucken, ob du den Eclipse-Compiler verteilen kannst).

EDIT: Okay, ich wie gerade sehe benutzt der Eclipse-Compiler von JCI die Klasse org.eclipse.jdt.internal.compiler.Compiler. Vielleicht solltest du mal schauen, ob du diese mitsamt der Abhängigkeiten aus dem entsprechenden Eclipse-Projekt herausziehen und mitsamt deiner Anwendung verteilen kannst.
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Erfahrungen mit der Klasse "JavaCompiler" (Java 6) Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben