0

我正在尝试从另一个 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)
4

4 回答 4

3

您需要.class file在命令行参数中传递您的参数。您不会.java使用命令运行文件java

只需editor作为参数传递,如果包含您的类main methodeditor.class.

另外,请遵循以下@Azodious's答案。

此外,您可能需要将您array的路径更改为包含class file. src文件夹可能没有您的class file

因此,使用以下命令运行您的程序: - java exec editor。我认为这应该有效。

于 2012-10-30T06:05:05.363 回答
1

您没有将命令数组传递给exec方法

将其更改为以下内容:

Process pro=Runtime.getRuntime().exec(cmd);

并且,您的错误表明您正在尝试运行 src 文件:

Cannot run program "editor.java"

你应该通过.class file name运行它。

于 2012-10-30T06:05:48.623 回答
0

E:\netbeans\Project\src你只找到源文件,源文件你无法运行,,,

尝试在*E:\netbeans\project\build\classes*中找到的类文件中执行

String[] cmd = {"class", "-cp", "E:\netbeans\project\build\classes\", s};

注意:检查您的课程路径

谢谢

于 2012-10-30T06:08:16.223 回答
0

多个问题 -

  1. 您正在尝试从命令行运行命令“editor.java”。您的命令数组仍未使用。
  2. 您编译的类是否与源代码位于同一目录中?通常,使用 Eclipse 会在bin文件夹中生成类。你应该这样做 -

    String[] cmd = {"java", "-cp", "E:\netbeans\Project\bin", s};
    Process pro=Runtime.getRuntime().exec(s);

  3. editor.java在默认包中吗?如果不是,则需要在运行命令时输入完全限定名称。

我建议尝试从命令行运行该类,然后从 Java 代码中形成相同的命令。

于 2012-10-30T06:10:41.823 回答