Prozessaufruf Arbeitsverzeichniss

cybermog

Aktives Mitglied
Der Aufruf eines Kompilers mit einem Prozess runtime bewirkt dass der Kompiler die angegebenen Dateien nicht finden kann. Dem Prozess mitübergeben wird eine Variable, besser ein File (dir) mit dem Pfad des Arbeitsverzeichnisses. In dem sich auch die zu kompilierenden Dateien (*.java) befinden. Das scheint irgendwie nicht zu funktionieren. Ich habe den Pfad ausgegeben und nocheinmal genau überprüft. Es scheint alles zu stimmen.

Java:
Process p = Runtime.getRuntime().exec(jrePath+"/javac -Xstdout "+userDir+"/log_jc.log -g:none -source 1.4 -target 1.4 -bootclasspath "+userDir+"/lib/cldcapi11.jar;"+userDir+"/lib/midpapi20.jar;"+userDir+"/lib/wma20.jar;"+ originalJar +"  -d "+userDir+"/"+targetDirectory+" *.java",env, dir);

Meldung des Kompilers (log_jc):
javac: file not found: *.java, usage...

Jemand Erfahrungen ?
 

cybermog

Aktives Mitglied
der Prozessaufruf sieht so aus:

Java:
/usr/lib/jvm/java-6-openjdk/bin/javac -Xstdout /home/mathias01/Projekte/test/log_jc.log -g:none -source 1.4 -target 1.4 -bootclasspath /home/mathias01/Projekte/test/lib/cldcapi11.jar;/home/mathias01/Projekte/test/lib/midpapi20.jar;/home/mathias01/Projekte/test/lib/wma20.jar;/home/mathias01/Projekte/test2/abcde.jar -d /home/mathias01/Projekte/test/tmp *.java

wie gesagt Antwort vom Kompiler im log_jc: *.java file not found.

wenn ich statt runtime den neuen prozess builder verwende:

Java:
 ProcessBuilder builder = new ProcessBuilder(jrePath+"/javac -Xstdout "+wrapperDir+"/log_jc.log -g:none -source 1.4 -target 1.4 -bootclasspath "+wrapperDir+"/lib/cldcapi11.jar;"+wrapperDir+"/lib/midpapi20.jar;"+wrapperDir+"/lib/wma20.jar;"+ originalJar +"  -d "+wrapperDir+"/"+targetDirectory+" *.java");         
         builder.directory(dir);
         builder.redirectErrorStream(true);
         Process process = builder.start();
         InputStream is = process.getInputStream();
         InputStreamReader isr = new InputStreamReader(is);
         BufferedReader br = new BufferedReader(isr);
         String line;
         while ((line = br.readLine()) != null) 
             log.log(Level.INFO, "Process javac -- input and error Stream: "+line);
        int i = process.waitFor();

        log.log(Level.INFO, "--compiled to tmp-- "+wrapperDir+"/"+targetDirectory);

erhalte ich die exception:
'Befehl' + in directory "/home/mathias01/Projekte/test/wrapper_source/EN/0/src + java.io.IOException: error=2, No such file or directory
 
Zuletzt bearbeitet:

cybermog

Aktives Mitglied
Ok, so

Java:
 File dir = new File(wrapperDir+"/wrapper_source/"+languagePath+"/"+lcdSize+"/src/");
        log.log(Level.INFO, "--compiling: env: "+env[0]+" dir: "+dir.getPath().toString()+" jreParh: "+jrePath);

         ProcessBuilder builder = new ProcessBuilder(jrePath+"/javac","-Xstdout",wrapperDir+"/log_jc.log","-g:none","-source","1.4","-target","1.4","-bootclasspath",wrapperDir+"/lib/cldcapi11.jar:"+wrapperDir+"/lib/midpapi20.jar:"+wrapperDir+"/lib/wma20.jar:"+originalJar,"-d",wrapperDir+"/"+targetDirectory,"*.java");
         builder.directory(dir);
         builder.redirectErrorStream(true);
         Process process = builder.start();
         InputStream is = process.getInputStream();
         InputStreamReader isr = new InputStreamReader(is);
         BufferedReader br = new BufferedReader(isr);
         String line;
         while ((line = br.readLine()) != null) 
             log.log(Level.INFO, "Process javac -- input and error Stream: "+line);
        int i = process.waitFor();

        log.log(Level.INFO, "--compiled to tmp-- "+wrapperDir+"/"+targetDirectory);

funktioniert wieder der javac Aufruf, Aber javac meldet wieder *.java not found. Man kann ja auch bei javac den sourcepath angeben. Das funktioniert aber auch nicht. In Windows funktioniert das so wie es jetzt ist. Meine Vermutung ist, dass das Arbeitsverzeichniss nicht richtig übergeben wird.

Muss man am environment etwas ändern ?
 

Neue Themen


Oben