MidLet kompilieren javac

cybermog

Aktives Mitglied
Hallo,

Folgender Prozessaufruf verursacht einen Fehler. Das Programm kann danach nicht einmal geschlossen werden. ErrorStream Ausgabe funktioniert auch nicht.

Java:
String[] env = {System.getProperty("user.dir")};
File dir = new File(System.getProperty("user.dir"));
Process javac_process = Runtime.getRuntime().exec("javac -bootclasspath C:\\WTK2.5.2_01
\\lib\\cldcapi11.jar;C:\\WTK2.5.2_01\\lib\\midpapi20.jar -sourcepath wrapper_source 
-d tmp *.java", env, dir);
JOptionPane.showMessageDialog (null, streamToString(javac_process.getInputStream()) , 
"InputStream", JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog (null, streamToString(javac_process.getErrorStream()) , 
"ErrorStream", JOptionPane.ERROR_MESSAGE);
 
Der Kompileraufruf hängt. Nachdem ich in die Streamausgabe einen neuen Thread eingebaut habe bekomme ich auch keine Fehlermeldungen vom Kompiler. Den Aufruf auf der Konsole eingegeben und die Fehlermeldungen bei der Kompilierung werden angezeigt. Wenn ich einen Rechtschreibfehler im Pfad habe, wird vom ErrorStream gesagt, invalid command, etc.

Java:
// compilie to tmp
            String[] env = {System.getProperty("user.dir")};
            File dir = new File(System.getProperty("user.dir"));
            
            String cmdQuelle = "cmd /c";
            String cmdProgFile="D:/Java/jdk1.6.0_04/bin/javac -g:none -source 1.4 -target 1.4 -bootclasspath d:/WTK2.5.2_01/lib/cldcapi11.jar;d:/WTK2.5.2_01/lib/midpapi20.jar 
            -sourcepath wrapper_source -d tmp *.java";
            //cmdProgFile="\""+ cmdProgFile +"\"";
            String execParameter= cmdQuelle + cmdProgFile;
            Process javac_process = Runtime.getRuntime().exec(execParameter, env, dir);
            int exitValue = javac_process.waitFor();
            // print process stream to dialogue
            JOptionPane.showMessageDialog (null, streamToString(javac_process.getInputStream()) , "InputStream", JOptionPane.INFORMATION_MESSAGE);
            JOptionPane.showMessageDialog (null, streamToString(javac_process.getErrorStream()) , "ErrorStream", JOptionPane.ERROR_MESSAGE);

Java:
public static String streamToString(InputStream is) throws Exception {
    final BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    final StringBuilder sb = new StringBuilder();
    //String line = null;

    new Thread( new Runnable() {

			public void run() {
				while(true) {
					try {
						String line;
                                                while ((line = reader.readLine()) != null) {
                                                  sb.append(line).append("\n");
                                                }
                                                //is.close();
					} catch ( IOException iox) {
						iox.printStackTrace();
					}
				}
			}
		}).start();

    
    return sb.toString();
  }
 
Zuletzt bearbeitet:
Was ist denn an dem Aufruf falsch ??

Java:
javac.exe\" -g:none -source 1.4 -target 1.4 -bootclasspath c:\\WTK2.5.2_01\\lib\\cldcapi11.jar;
d:\\WTK2.5.2_01\\lib\\midpapi20.jar -sourcepath "+ sourceDirectory +" -d " +targetDirectory +" *.java

und auf Konsole:
Java:
C:\Program Files\Java\jdk1.6.0_21\bin>javac -g:none -source 1.4 -target 1.4 -boo
tclasspath c:\WTK2.5.2_01\lib\cldcapi11.jar;d:\WTK2.5.2_01\lib\midpapi20.jar -so
urcepath c:\users\xxxx\documents\netbeansprojects\wrapper\wrapper_source -d
c:\users\xxxx\documents\netbeansprojects\wrapper\tmp *.java

Fehlermeldung:
javac: file not found: *.java
usage ...
 
Zuletzt bearbeitet:
Übergibst du das

Was ist denn an dem Aufruf falsch ??

Java:
javac.exe\" -g:none -source 1.4 -target 1.4 -bootclasspath c:\\WTK2.5.2_01\\lib\\cldcapi11.jar;
d:\\WTK2.5.2_01\\lib\\midpapi20.jar -sourcepath "+ sourceDirectory +" -d " +targetDirectory +" *.java

so der execute-Methode von Runtime??? Da fehlt doch ein bisschen was am Anfang ...

und auf Konsole:
Java:
C:\Program Files\Java\jdk1.6.0_21\bin>javac -g:none -source 1.4 -target 1.4 -boo
tclasspath c:\WTK2.5.2_01\lib\cldcapi11.jar;d:\WTK2.5.2_01\lib\midpapi20.jar -so
urcepath c:\users\xxxx\documents\netbeansprojects\wrapper\wrapper_source -d
c:\users\xxxx\documents\netbeansprojects\wrapper\tmp *.java

Fehlermeldung:
javac: file not found: *.java
usage ...

Sagt er doch, findet *.java nicht.
 
Java:
String[] env = {System.getProperty("user.dir")};
File dir = new File(System.getProperty("user.dir"));
String cmdProgFile="\"C:\\Program Files\\Java\\jdk1.6.0_21\\bin\\javac.exe\" -g:none -source 1.4 -target 1.4 
-bootclasspath c:\\WTK2.5.2_01\\lib\\cldcapi11.jar;
d:\\WTK2.5.2_01\\lib\\midpapi20.jar -sourcepath "+ sourceDirectory +" -d " +targetDirectory +" *.java";
Process javac_process = Runtime.getRuntime().exec(cmdProgFile, env, dir);

1. So sieht das insgesammt aus.
2. In dem Ordner (nach sourcepath) befinden sich zu 100% .java Dateien !!
 
Nein, aber ich mache ein neues Thema. Das hat nichts mehr mit Midlets zu tun sondern mit javac, exec, der Option -sourthpath und den Umgebungsparametern, denke ich.

Die Optionen zum kompilieren eines Midlets sind:
Code:
javac.exe\" -g:none -source 1.4 -target 1.4 -bootclasspath c:\\WTK2.5.2_01\\lib\\cldcapi11.jar;
d:\\WTK2.5.2_01\\lib\\midpapi20.jar -sourcepath sourceverzeichniss -d targetverzeichniss *.java

da geht es weiter:
http://www.java-forum.org/java-basi...sourcepath-umgebungsvariablen.html#post694768
 

Neue Themen


Zurück
Oben