2011-02-08 134 views

回答

34

我建议你使用ProcessBuilder并启动一个新的JVM。

这里是什么让你开始:

ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar"); 
pb.directory(new File("preferred/working/directory")); 
Process p = pb.start(); 
+0

@aioobe我能够整合原始程序中的System.out?原谅这个问题,但我是新来的java – vfgjrk 2011-02-08 17:35:37

+1

不知道我理解你的评论,但是你从`start()```````getInputStream```` getOutputStream`提供了'Process`。 – aioobe 2011-02-08 17:37:55

+0

行不通!非常感谢你 – vfgjrk 2011-02-08 17:40:30

3

首先,你的问题的描述是有点不清楚。我不明白是否要从jar文件中加载要在应用程序中使用的类,或者该jar包含要运行的主文件。我会认为这是第二个。

如果是这样,你在这里有很多选择。 最简单的一种是以下几点:

String filePath; //where your jar is located. 
Runtime.exec(" java -jar " + filepath); 

瞧... 如果您不需要运行jar文件,而是加载类出来,让我知道。

3

另一种方法在Windows上是:

Runtime.getRuntime().exec("cmd /c start jarFile"); 

这种方式,你可以把你的进程的优先级,以及(普通/低/等)

-1

1)设置来自环境变量的类路径

2)转到您的jar文件所在的文件夹

3)通过命令提示符

Java的罐子jarfilename

10
Process proc = Runtime.getRuntime().exec("java -jar Validate.jar"); 
    proc.waitFor(); 
    // Then retreive the process output 
    InputStream in = proc.getInputStream(); 
    InputStream err = proc.getErrorStream(); 

    byte b[]=new byte[in.available()]; 
    in.read(b,0,b.length); 
    System.out.println(new String(b)); 

    byte c[]=new byte[err.available()]; 
    err.read(c,0,c.length); 
    System.out.println(new String(c)); 
2

以往要通过使用仅此一行代码,您可以从其中一个jar文件运行以下命令。

Desktop.getDesktop().open(new File("D:/FormsDesktop.jar")); 

其中

new File("your path to jar") 

希望它能帮助。

谢谢。

0
  1. 罐子库添加到您的项目
  2. 导入主类(见jar文件清单)
  3. 调用静态方法主要有参数

    String args[] = {"-emaple","value"}; 
    PortMapperStarter.main(args);