2017-07-06 3 views
-1

Ich habe den folgenden Code drei Hinrichtung auszuführen:kann nicht Hauptklasse geladen werden, wenn sie mit Runtime.exec kompiliert und ausgeführt()

  public static void main(String[] args) throws InterruptedException, IOException 
      { 
       String filepath1 = "cmd /c gradlew jmhJar"; 
       String filepath2 = "cmd /c java -jar path/to/the/file/filename.jar -rf csv -rff path/to/save/file1.csv -wi 3 -i 5 -f 2"; 
       String filepath4 = "cmd /c javac path/to/the/file/ParserHash.java";/*Code to compile is parserHash.java*/ 

    String filepath3 = "cmd /c java path/to/the/compiled/class/ParserHash "C:/Users/msek/Desktop/trial/result/file1.csv C:/Users/msek/Desktop/trial/result/file2.csv C:/Users/msek/Desktop/trial/result/file3.csv"; 
       try 
        {   
        runProcess(filepath1); 
        runProcess(filepath2); 
        System.out.println("Sucessfully written into file1.csv"); 
        runProcess(filepath4); 
        System.out.println("Compilation Over"); 
        runProcess(filepath3); 
        System.out.println("Program Sucessfully Executed"); 
        } 
        catch (Exception e) 
        { 
         e.printStackTrace(); 
        } 
       } 

public static void runProcess(String processString) 
{ 
    try 
    { 

    final Process p = Runtime.getRuntime().exec(processString); 

     new Thread(new Runnable() { 
      public void run() { 
       BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 
       String line = null; 

       try { 
        while ((line = input.readLine()) != null) 
         System.out.println(line); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     }).start(); 

     p.waitFor(); 
    } 

    catch (Exception x) 
    { 
     x.printStackTrace(); 
    } 
} 

Wenn ich die Java-Datei kompilieren zu diesem bestimmten Verzeichnis zu gehen und seine Compilierung kompilieren erfolgreich und beim Ausführen wird es erfolgreich ausgeführt. Aber wenn ich es wie "cmd/c Pfad/zu/java/file/file.java" übergebe, wird es kompiliert, aber wenn ich es ausführe, erhalte ich eine Fehlermeldung, dass mainclass eventhough class file nicht gefunden oder geladen werden kann.

Ich habe verschiedene Links zu diesem Thema, die Buid-Prozess vorgeschlagen, aber das hat nicht funktioniert.

Ich möchte nur wissen, wohin ich gehe falsch und wie mehrere Argumente, die eine Java-Datei zu erstellen, ausführen, indem man mit Runtime.exec() ..

+0

Haben Sie nach 'javac' die' .jar' Datei erstellt? –

+0

fügen Sie einen Klassenpfad zu Ihnen Befehl – Flot2011

+0

@UsagiMiyamoto tatsächlich die ersten beiden Prozess läuft gut ohne Probleme, beginnt das Problem mit der Kompilierung Teil der javafile d., Dateipfad 3 und Dateipfad 4 Kompilierung mit der Ausführung. –

Antwort

1
java path/to/the/compiled/class/ParserHash 

Wenn Sie Probleme haben mit ein exec() sollten Sie:

  1. Versuchen Sie den Befehl von einer Befehlszeile selbst. Es wird in diesem Fall genauso ausfallen.
  2. Suchen Sie die Syntax des Befehls. In diesem Fall erfahren Sie, dass das Argument des Befehls java kein Pfad ist, sondern ein vollständig qualifizierter Klassenname, d. H. Einschließlich des Paketnamens. Mit Punkten.
Verwandte Themen