无法从另一个java程序运行java程序

时间:2012-10-30 06:01:04

标签: java

我试图从另一个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 个答案:

答案 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)

多个问题 -

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

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

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

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