从另一个java程序运行带有类路径的已编译java程序

时间:2013-04-25 05:46:36

标签: java

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

3 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

请阅读:http://www.javaworld.com/jw-12-2000/jw-1229-traps.html
它已经过时了13年,因为它是在它公开的当天写成的
你几乎总是更好地动态创建一个新的类加载器,给它自己的环境,然后启动它。

答案 2 :(得分: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();
 }