Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Classpathcompiler zur Laufzeit aufrufen & lib-classpath
ich habe ein vermutlich kleineres Problem bezüglich manueller Ausführung von javac während der Laufzeit des Programms. Ich möchte zur Laufzeit mittels ANTLR Datein erstellen lassen und die generierten *.java-Datein müssen dann compiliert werden um sie später im Programm zu laden.
Per Konsole kann ich dabei wie folgt erfolgreich compilieren:
Wer kennt den Trick und möge ihn mir verraten? Wichtig ist, dass ich später die zu nutzende lib (antlr*.jar) nicht in die Jar des Programms packe, sondern in einem Ordner neben der jar liegen habe, damit die lib ausgetauscht werden kann, wenn sie verbessert wird. Daher wäre der Aufruf gemäß Konsole nach meinem Verständnis, dass zu erreichende Konstrukt im Code
Ich nehme mal an das dein Code gar nicht compiliert, weil er die Klassen nicht findet. Die einfache Lösung für dieses Problem ist einfache alle Bibliotheken (und dereren Dependencies falls vorhanden) in den Classpath zu stecken.
Du erweiterst zwar den Classpath beim Aufruf des Compilers zu Laufzeit, aber vielleicht hast du vegessen die Bibliotheken in deiner IDE in den Classpath einzubinden?
Der Code compiliert schon, nur der manuelle Aufruf des Compilers aus meinem Programm heraus, um die zur Laufzeit erzeugten java-Datein zu compilieren, klappt nicht.
Dateistruktur ist in der Situation später folgende (zB. in C:\myProgram\):
lib
antlr-3.4-complete.jar
myProg.jar
Ich möchte dann zur Laufzeit java-Datei aus einem anderen Pfad compilieren (zB. C:\GrammarFiles\):
BddCtl
BddCtl.g
BddCtlLexer.java
BddCtlParser.java
Ltl
erzeugt werden sollen dann:
C:\GrammarFiles\BddCtl\BddCtlLexer.class
C:\GrammarFiles\BddCtl\BddCtlParser.class
das geht wie gesagt per hand mit obigem Konsolen-Aufruf, aber eben nicht per Aufruf durch Programmcode
Die Frage ist ob beim Aufruf des java-Compilers über Dein Prgrammcode hinweg auch die passenden Umgebungsvariablen nocht gesetzt sind? Stuchwort JAVA_HOME usw usf... - Außerdem ist die Frage wo Dein Ausführungsverzeichnis ist. Denn mit
"-classpath lib/*.jar" gibst du eindeutig relative Pfade an - aber befindest Du Dich tatsächlich dort wo Du vermutest zu sein??