javac, exec, -sourcepath, Umgebungsvariablen

cybermog

Aktives Mitglied
Hallo,

ich habe einen Kompileraufruf geschrieben, der inhaltlich richtig ist wie ich denke. Es soll ein Projekt in einem Verzeichniss mit Unterverzeichnissen nach einem Zielverzeichniss kompiliert werden. Dazu verwende ich -sourcepath xyz und -d zyx und dann *.java. Das Projekt ist ein Midlet.
An exec übergeben funktioniert es nicht.(1)
Fehlermeldung: javac: file not found: *.java
exec hat die folgenden Parameter:
Java:
String[] env = {System.getProperty("user.dir")};
File dir = new File(System.getProperty("user.dir"));
Das sourceverzeichnis befindet sich direkt unterhalb von user.dir. ( -sourcepath sourceverzeichniss ).
Dann habe ich den Aufruf in eine Batch Datei geschrieben.
Wenn ich nun die Batch Datei im user.dir mit exec aufrufe funktioniert es ebenso nicht.(3).

Fehlermeldung: javac: file not found: *.java
Code:
@ECHO OFF
javac -Xstdout log.log -g:none -source 1.4 -target 1.4 -bootclasspath c:\WTK2.5.2_01\lib\cldcapi11.jar;c:\WTK2.5.2_01\lib\midpapi20.jar;
c:\WTK2.5.2_01\lib\wma20.jar;C:\Users\xxx\xxxx.jar  -sourcepath wrapper_source -d tmp  *.java
Natürlich habe ich beim exec-Aufruf noch den ganzen Pfad angegeben und jeweils zwei \\ gemacht.

Was mache ich falsch ?
 
Zuletzt bearbeitet:
Wenn ich nun die Batch Datei verändert erstelle, so dass sie im sourceverzeichniss ausgeführt wird, ohne die Option sourthpath nur mit *.java dann funktioniert das Kompilieren einwandfrei, wenn ich die Datei nach der Erstellung manuell aufrufe. Starte ich die Datei mit exec("sourceverzeichniss\\compile.bat") passiert nichts. Das log.log wird nichteinmal erstellt.

Warum ?
 
Wie wärs mit Echo on 🙂
Vielleicht findet er javac nicht aus diesem Kontext? (Das war wie Schiessen in einem unbelechteten Tunnel auf ein unbeleuchtetes Ziel)
 
Der Prozess läuft im Hintergrund und ich sehe mit ECHO ON nichts. Die Datei manuell ausgeführt oder den Aufruf auf der Konsole im sourceverzeichniss eingegeben und alles klappt. Zu javac ist der gesammte Pfad angegeben.
 
Zuletzt bearbeitet:
Aber nimm doch mal dieZeile echo off raus - kannst ja den error output in eine Datei umleiten - da muss doch eine Fehlermeldung kommen - weil sonst stehen wir mit verbundenen Augen in einer dunklen Höhle.

Ich bin überzeugt dass er javac nicht findet, denn bei mir wird log.log erstellt bevor irgendetwas sonst versucht wird ...

Oder gibt doch mal C:\Prog........\javac.exe - den ganzen Pfad an ....
 
Zuletzt bearbeitet:
Der Rückgabewert des Prozessaufrufs ist 2. Der InputStream ist das user.dir>Pfad zu javac + javac .. Einen Error Stream gibt es nicht.
 
Sorry aber all meine 100 Ideen aufzuzählen die ich hätte um den Fehler zu suchen dazu reicht weder meine Zeit noch der diskspace des Forums ;-) (Ein bisschen Bluff muss sein)

echo alle beteiligten Variablen
javac -version
etc etc etc

und dann output und erroroutput in ein File umleiten .........


Beweis erst mal das javac auch dann gefunden wird wenn das Ding im Hintergrund gestartet wird ---- nimm es nicht einfach an sondern BEWEISE es. Ich wette ein virtuelles Bier dass das der Grund ist.
 
Schluck, schluck, schluck.. Danke für das Bier. javac wurde aufgerufen. das hat man daran gesehen, dass das log file angelegt wurde. Im Ordner darüber. Egal wo ich die Batch Datei ausführe, der Befehl wird im Umgebungsverzeichniss aufgerufen. Nun übergebe ich die Zeile wieder direkt an exec und habe als Parameter das sourceverzeichniss angegeben.
 

Neue Themen


Zurück
Oben