首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Net Beans中从Java代码执行jar文件

如何在Net Beans中从Java代码执行jar文件
EN

Stack Overflow用户
提问于 2011-06-21 13:44:25
回答 3查看 1.6K关注 0票数 1

我有一个JAR文件(“AccessDB.jar”-在执行它时启动一个工具)。我必须从Netbeans 7.0中的这个位置(D:\NB\ProjFolder)访问这个jar文件。我试着用ProcessBuilder读取它,但是失败了。

从这段java代码中,我必须通过读取这个工具(在jar文件中)来启动它。如何为此修改代码?

代码语言:javascript
复制
public class classAccessDB {

public void GenerateAccessDB() {
    Runtime run = Runtime.getRuntime(); 
try 
{
     ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\Java\\jdk1.6.0_20\\bin\\java.exe", "-jar", "AccessDB.jar");
     pb.directory(new File("D:\\NB\\ProjFolder")); 
     Process p = pb.start(); 
     InputStream is = p.getInputStream(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(is)); 

     String resultOutput = br.toString(); 
     System.out.println(resultOutput); 
}
catch(Exception E) 
{
     E.printStackTrace();
     System.out.println(E.getMessage());   
}
}
}
EN

回答 3

Stack Overflow用户

发布于 2015-01-28 22:43:22

您的.jar可能无法执行。实例化类或调用任何静态方法。

在清单文件中创建JAR.时添加Main-Class条目。

然后你就可以使用

代码语言:javascript
复制
Process ps=Runtime.getRuntime().exec(new String[]{"java","-jar","yourJar.jar"});
        ps.waitFor();
        java.io.InputStream is=ps.getInputStream();
        byte b[]=new byte[is.available()];
        is.read(b,0,b.length);
        System.out.println(new String(b));
票数 1
EN

Stack Overflow用户

发布于 2015-01-28 22:21:08

当我这样做的时候,它对我来说是有效的:

代码语言:javascript
复制
public class classAccessDB {

public void GenerateAccessDB() {
Runtime run = Runtime.getRuntime(); 
try 
{
 ProcessBuilder pb = new ProcessBuilder("\"C:\\Program Files\\Java\\jdk1.6.0_20\\bin\\java\" -jar \"D:\\NB\\ProjFolder\\AccessDB.jar\"");

 Process p = pb.start(); 
 InputStream is = p.getInputStream(); 
 BufferedReader br = new BufferedReader(new InputStreamReader(is)); 

 String resultOutput = br.toString(); 
 System.out.println(resultOutput); 
}
catch(Exception E) 
{
  E.printStackTrace();
  System.out.println(E.getMessage());   
}
}
}

顺便说一句,你的问题对我帮助很大( thx:)

票数 0
EN

Stack Overflow用户

发布于 2015-01-28 22:25:10

试一试

代码语言:javascript
复制
ProcessBuilder pb = new ProcessBuilder(
    "C:\\Program Files\\Java\\jdk1.6.0_20\\bin\\java.exe",
    "-jar",
    "D:\\NB\\ProjFolder\\AccessDB.jar");

而不是。我在您的代码中看到,在启动Java进程之前,您确实要切换到文件夹D:\NB\ProjFolder,我也认为这应该是可行的。但是使用绝对文件名肯定可以。

如果这不起作用,请查看您得到的错误消息;它应该包含错误的线索。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6420862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档