2017-07-17 187 views
0

今天我遇到了一個「java」命令的問題。 我在Intellij IDEA中工作,認爲我錯誤的類路徑爲「java」命令。 請幫幫我。Java命令錯誤。無法找到或加載主類

package ru.mch; 
import ru.mch.RunTask; 

public class Program { 
    public static void main(String[] args) { 
     String taskCode = "class UserProgram{ public static void main(String[] args) { int b = 3 + 1; System.out.println(b);}}"; 
     String packageName = "package ru.mch; "; 
     String all = packageName + taskCode ; 
     RunTask runTask = new RunTask(all); 
     int result = runTask.run(); 
    } 
} 

我想從String中獲取程序代碼,創建新的java類,將代碼寫入類並編譯並運行新的java類。

package ru.mch; 
import java.io.*; 

public class RunTask { 

    private String answerFromPage; 
    private int programExitValue; 

    public RunTask(String answerFromPage) { 
     this.answerFromPage = answerFromPage; 
     this.programExitValue = 0; 
    } 

    private static void printLines(String name, InputStream ins) throws Exception { 
     String line = null; 
     BufferedReader in = new BufferedReader(
       new InputStreamReader(ins)); 
     while ((line = in.readLine()) != null) { 
      System.out.println(line); 
     } 
    } 

    private static int runProcess(String command) throws Exception { 
     Process pro = Runtime.getRuntime().exec(command); 
     printLines(/*command + */" stdout:", pro.getInputStream()); 
     printLines(" stderr:", pro.getErrorStream()); 
     pro.waitFor(); 
     System.out.println(command + " exit value = " + pro.exitValue()); 
     return pro.exitValue(); 
    } 

    public int run(){ 
     //String fileName = "src\\main\\java\\ru\\mch\\UserProgram.java"; 
     String fileName = "src\\main\\java\\ru\\mch\\UserProgram.java"; 
     File f = new File(fileName); 
     f.getParentFile().mkdirs(); 
     try { 
      f.createNewFile(); 
     } catch (IOException e) { 
      throw new IllegalArgumentException("File creating error"); 
     } 
     try(FileWriter writer = new FileWriter(fileName, false)) 
     { 
      writer.write(this.answerFromPage); 
      writer.flush(); 
     } 
     catch(IOException ex){ 
      System.out.println(ex.getMessage()); 
     } 
     try { 
      System.out.println(runProcess("javac -sourcepath src src\\main\\java\\ru\\mch\\UserProgram.java")); 
      System.out.println("------------"); 
      this.programExitValue = runProcess("java src\\main\\java\\ru.mch.UserProgram"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return this.programExitValue; 
    } 
} 

這是IDEA日誌:創建

javac src\main\java\ru\mch\UserProgram.java exit value = 0 
0 
------------ 
Error: Could not find or load main class src\main\java\ru.mch.UserProgram 
java src\main\java\ru.mch.UserProgram exit value = 1 

類新的.class了。 我嘗試編寫完整的類路徑,嘗試寫'\'而不是'。'。在包名中,但都是錯誤的。 對不起,我的英語不好。

+0

重複的重複https://stackoverflow.com/questions/7485670/error-could-not-find-or-load-main-class?rq=1 –

+0

我嘗試了這些主題的方法,但沒有幫助。我想我做錯了什麼。這就是我尋求幫助的原因。 – Michael777

+0

如果我嘗試用命令行(win) 運行它,我成功使用「javac -sourcepath src \ main \ java src \ main \ ru \ mch \ Program.java」編譯它,但是我無法運行它 – Michael777

回答

0

使用以下命令:

java -cp src\main\java ru.mch.UserProgram 
相關問題