-2

我正在尝试从另一个 java 程序运行带有其类路径的已编译 java 程序。但它没有显示结果。我的代码如下

String[] cmd = {"C:\\WINDOWS\\system32\\cmd.exe","/c","start","javac","D:\\java\\hi\\src\\helo.java"};

Runtime.getRuntime().exec(cmd);

注意:在此之后,类文件被创建,但下面的代码不起作用。

String[] cmd1 = {"C:\\WINDOWS\\system32\\cmd.exe","/c","start","java"," -cp D:\\java\\hi\\src"," helo"};

Runtime.getRuntime().exec(cmd1);
4

3 回答 3

0

阅读:http
://www.javaworld.com/jw-12-2000/jw-1229-traps.html 它已经很旧了,但是在它写出来之后的 13 年和它上市那天一样有效。

你几乎总是最好动态地创建一个新的类加载器,给它自己的环境,然后在其中启动。

于 2013-04-25T05:54:26.883 回答
0

我希望你没有得到任何例外。我假设您从正确的位置获取类文件。

由于您正在尝试捕获helo的输出,因此您应该捕获您在下半年运行的 java 命令的输入流。

尝试类似:(仅适用于第二个命令

BufferedReader in = null;
try {  
    String[] cmd1 = {"C:\WINDOWS\system32\cmd.exe","/c","start","java"," -cp D:\java\hi\src"," helo"};
    Process p = Runtime.getRuntime().exec(cmd1);  
    in = new BufferedReader(new InputStreamReader(p.getInputStream()));  
    String line = null;  
    while ((line = in.readLine()) != null) {  
        System.out.println(line);  
    }
 } catch (IOException e) {  
        e.printStackTrace();  
 } finally {
    in.close();
 } 
于 2013-04-25T05:55:18.433 回答
0

您需要这样做才能在 cmd 中动态运行

Runtime.getRuntime.exec("cmd /c cd/Desktop/folder/ & java yourprogram");

这假设您在 Desktop/folder/ 目录中生成了您的类文件

需要注意的是 & - 连接命令和 /c 将参数传递给 cmd

于 2013-04-25T05:52:00.313 回答