在没有绝对路径的情况下从Java运行jar文件
我有一个Calculator.jar文件,是用Netbeans创建的 我想用java代码运行那个jar文件。在查看了stackoverflow和一些文档站点之后,我尝试了以下方法:在没有绝对路径的情况下从Java运行jar文件,java,directory,executable-jar,Java,Directory,Executable Jar,我有一个Calculator.jar文件,是用Netbeans创建的 我想用java代码运行那个jar文件。在查看了stackoverflow和一些文档站点之后,我尝试了以下方法: public static void main (String [] args){ Runtime rt = Runtime.getRuntime(); Process pr = rt.exec("java -jar C:\\pathToJar\\Calculator.jar); pr.wai
public static void main (String [] args){
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("java -jar C:\\pathToJar\\Calculator.jar);
pr.waitFor();
}
代码运行正常,但我的问题是文件的路径。如果我在没有绝对路径的情况下运行程序,它会运行并完成,但我从未看到计算器GUI弹出。当我使用绝对路径运行时,GUI会按预期弹出
我将jar文件放在与源代码相同的位置。我想这样做会让我只需要把Calculator.jar放在没有绝对路径的地方。但这似乎不起作用
有人知道我如何存储jar文件,这样我就不需要使用绝对路径了吗
编辑:
我还尝试在项目中创建一个名为jarFiles的单独包,并尝试了路径jarFiles\Calculator.jar
。那也没用。我想我误解了默认路径/调用命令时默认使用的路径cmd。不过我不确定
感谢您提前提出的建议 我相信你遇到的问题是当你尝试
public static void main (String [] args){
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("java -jar \\Calculator.jar");
pr.waitFor();
}
它查到了计算机的根目录,而且,最后忘记了一个引号。访问当前工作目录的方法是简单地删除\\
,您可能还希望用引号括住jar文件路径,以防万一
public static void main (String [] args){
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("java -jar \"Calculator.jar\"");
pr.waitFor();
}
“当前工作目录”是您在运行程序之前更改为的任何目录。在某些IDE中,可以将其设置为相对于类文件的特定点。但是当你写程序的时候,你不能依赖这个。要么解析相对于已知点的路径,要么使用绝对路径。但是如果我写了“projectpackage\src\Calculator.jar”之类的东西,那就行不通了。从技术上讲,我在这一点上设置了一个相对路径。或者,我是否需要执行“getWorkingDirectory”之类的操作,然后访问该文件?当您从IDE运行程序时,您可能会发现查看当前工作目录是什么很有教育意义。请记住,当它从命令行运行时,用户可以设置他们喜欢的任何工作目录。您可能希望将路径作为参数、环境变量传递,或者相对于已知文件进行解析。我不确定这是否正是您所要查找的,但您的IDE似乎是从不同的位置运行jar的。谢谢您的帮助,但我已经修复了它。我以为我的工作目录是一个地方,而它是另一个地方。