从另一个目录运行的 JAR 文件?
Posted
技术标签:
【中文标题】从另一个目录运行的 JAR 文件?【英文标题】:JAR file running from another directory? 【发布时间】:2010-11-20 22:21:26 【问题描述】:我用我的 Java 程序创建了一个 JAR 文件。这段代码将打开目录“Test”中的几个文件,该目录与 JAR 文件位于同一目录中。像这样:
/
-- program.jar
-- /Test
-- *
如果我通过终端运行:java -jar program.jar,它运行完美。但是如果我以图形方式运行(右键单击 jar 文件并使用 OpenJDK 打开...),它就无法正常工作。就像我从另一个目录运行一样。
当我以图形方式运行 JAR 文件时,它是否可能从另一个目录运行?
顺便说一句,我在 Ubuntu 上运行。
【问题讨论】:
查看bugs.launchpad.net/nautilus/+bug/234777 和bugzilla.gnome.org/show_bug.cgi?id=535277 错误报告。现在好像什么都做不了。 我不认为这是 nautilus 上的错误。谢谢。 在运行 Java 程序时,您不能假设关于当前工作目录的任何事情。但是,您可以向 JVM 询问例如从哪里加载给定的类,然后从那里开始。 【参考方案1】:是的,您将获得另一个当前工作目录...有两种解决方案:
1) 通过这个 hack 找到 cwd:
public class Test
public static void main(String... args)
ClassLoader cl = Test.class.getClassLoader();
String f = cl.getResource("").getFile();
File cwd = new File(f);
if (cwd.toString().endsWith("!"))
cwd = cwd.getParentFile();
JOptionPane.showMessageDialog(null, cwd);
2) 如果Test
下的文件是静态的(不经常更改),解决方案是将它们打包到jar 中。
【讨论】:
没有解决办法吗?因为测试目录不是静态的。 请注意,所显示的 hack 假设相当多,可能并不适合所有人。【参考方案2】:我不确定这是否会有所帮助,但下面是类似 JAR 问题的链接。
Running jar file with source files in another directory
【讨论】:
这看起来不像是解决方案。 我以前看过这篇文章,但它确实没有帮助。 :(以上是关于从另一个目录运行的 JAR 文件?的主要内容,如果未能解决你的问题,请参考以下文章