如何在netbean中从Java代码执行jar文件
我有一个JAR文件(“AccessDB.JAR”-执行它时,启动一个工具)。我必须从Netbeans 7.0中的这个位置(D:\NB\ProjFolder)访问这个jar文件。我尝试使用ProcessBuilder读取它,但失败了 从这个java代码中,我必须通过读取来启动工具(在jar文件中)。如何对此修改代码如何在netbean中从Java代码执行jar文件,java,netbeans,Java,Netbeans,我有一个JAR文件(“AccessDB.JAR”-执行它时,启动一个工具)。我必须从Netbeans 7.0中的这个位置(D:\NB\ProjFolder)访问这个jar文件。我尝试使用ProcessBuilder读取它,但失败了 从这个java代码中,我必须通过读取来启动工具(在jar文件中)。如何对此修改代码 public class classAccessDB { public void GenerateAccessDB() { Runtime run = Runtime.get
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());
}
}
}
当我这么做的时候,它对我起了作用:
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:)当我这样做时,它对我很有用:
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());
}
}
}
顺便说一句,你的问题对我帮助很大(谢谢:)试试看
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
,我也认为这应该是可行的。但使用绝对文件名肯定会奏效
如果这不起作用,请查看您收到的错误消息;这应该包含错误的线索。试试看
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
,我也认为这应该是可行的。但使用绝对文件名肯定会奏效
如果这不起作用,请查看您收到的错误消息;这应该包含错误的线索。可能您的.jar不可执行。实例化类或调用任何静态方法 在创建JAR时添加主类条目。到清单文件中 然后你可以用
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));
可能您的.jar不可执行。实例化类或调用任何静态方法 在创建JAR时添加主类条目。到清单文件中 然后你可以用
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));
我在处理一个3d设计产品时遇到了一些问题,该产品希望在特定操作上运行一个可执行的jar文件,我所做的是创建一个批处理(windows)文件,该文件将具有执行jar文件的命令(如果安装了JRE)。并从应用程序执行批处理文件。-我在谷歌上搜索了“为Java Jar文件创建EXE”-希望这能帮助你!!!!尝试使用
Runtime.getRuntime().exec(“批处理文件完成路径”)代码>如果AccessDB.jar是一个绝对路径,而不是使用pb.directory,那么它可能会起作用。我在一个3d设计产品上工作时遇到了一些问题,该产品希望在特定操作上运行一个可执行的jar文件,我所做的是创建一个批处理(windows)文件,该文件将具有执行jar文件的命令(如果安装了JRE)。并从应用程序执行批处理文件。-我在谷歌上搜索了“为Java Jar文件创建EXE”-希望这能帮助你!!!!尝试使用Runtime.getRuntime().exec(“批处理文件完成路径”)
如果AccessDB.jar是一个绝对路径,而不是使用pb.directory,那么它可能会工作。您的代码将失败:C:\Program:没有这样的文件或目录
。如果将命令的所有部分粘贴到单个字符串中,则空格将成为一个问题。不要那样做。我编辑了我的答案。。。这种方法对我非常有效。。。试试看,如果可以的话,你可以删除-1:p代码现在可以了,但我仍然不建议使用“把所有东西放在一个字符串中”的方法;它总是脆弱的。好的,谢谢你的建议:))你的代码将失败,原因是:C:\Program:没有这样的文件或目录
。如果将命令的所有部分粘贴到单个字符串中,则空格将成为一个问题。不要那样做。我编辑了我的答案。。。这种方法对我非常有效。。。试试看,如果可以的话,你可以删除-1:p代码现在可以了,但我仍然不建议使用“把所有东西放在一个字符串中”的方法;好的,谢谢你的建议:))