我试图从另一个java程序(exec.java)运行一个java文件(editor.java)。它需要输入并显示文件未找到的消息。请给我一些建议,通过它我成功地运行了一个程序。
import java.io.*;
public class exec {
public static void main(String argv[]) {
try {
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
System.out.println("Enter the java class name");
String s=br.readLine();
String[] cmd = {"java", "-cp", "E:\netbeans\Project\src", s};
Process pro=Runtime.getRuntime().exec(s);
try (BufferedReader in = new BufferedReader(new InputStreamReader(pro.getInputStream()))) {
String line=null;
while((line=in.readLine())!=null) {
System.out.println(line);
}
}
} catch(Exception err) {
err.printStackTrace();
}
}
java.io.IOException: Cannot run program "editor.java": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
at java.lang.Runtime.exec(Runtime.java:615)
at java.lang.Runtime.exec(Runtime.java:448)
at java.lang.Runtime.exec(Runtime.java:345)
at project.exec.main(exec.java:18)
答案 0 :(得分:3)
您需要在命令行参数中传递.class file
。您没有使用.java
命令运行java
文件。
如果包含editor
的班级为main method
,请将editor.class
作为参数传递。
另外,请按照下面的@Azodious's
回答。
此外,您可能需要将array
中的路径更改为包含class file
的路径。 src
文件夹可能没有class file
因此,请运行您的程序: - java exec editor
。我认为这应该有效。
答案 1 :(得分:1)
您没有将命令数组传递给exec
方法
将其更改为以下内容:
Process pro=Runtime.getRuntime().exec(cmd);
并且,您的错误显示您正在尝试运行src文件:
Cannot run program "editor.java"
您应该通过.class file name
来运行它。
答案 2 :(得分:0)
在 E:\ netbeans \ Project \ src 里面你找到了唯一的源文件,源文件你无法运行,,,
尝试在 * E:\ netbeans \ project \ build \ classes *
中找到的类文件中执行String[] cmd = {"class", "-cp", "E:\netbeans\project\build\classes\", s};
注意:检查您的课程路径
谢谢
答案 3 :(得分:0)
多个问题 -
您编译的类与源是否在同一目录中?通常,使用eclipse,类会在bin
文件夹中生成。你应该做 -
String[] cmd = {"java", "-cp", "E:\netbeans\Project\bin", s};
Process pro=Runtime.getRuntime().exec(s);
您的editor.java
是否在默认包中?如果没有,则需要在运行命令时输入完全限定名称。
我建议尝试从命令行运行该类,然后从Java代码中生成相同的命令。