2017-07-17 188 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 
相关问题