【问题标题】:JAR file running from another directory?从另一个目录运行的 JAR 文件?
【发布时间】:2010-11-20 22:21:26
【问题描述】:

我用我的 Java 程序创建了一个 JAR 文件。这段代码将打开目录“Test”中的几个文件,该目录与 JAR 文件位于同一目录中。像这样:

/
 -- program.jar
 -- /Test
     -- *

如果我通过终端运行:java -jar program.jar,它运行完美。但是如果我以图形方式运行(右键单击 jar 文件并使用 OpenJDK 打开...),它就无法正常工作。就像我从另一个目录运行一样。

当我以图形方式运行 JAR 文件时,它是否可能从另一个目录运行?

顺便说一句,我在 Ubuntu 上运行。

【问题讨论】:

标签: java jar executable-jar


【解决方案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

【讨论】:

  • 这看起来不像是解决方案。
  • 我以前看过这篇文章,但它确实没有帮助。 :(
猜你喜欢
  • 1970-01-01
  • 2010-10-05
  • 2017-12-21
  • 1970-01-01
  • 2013-10-16
  • 2012-12-28
  • 2014-05-06
  • 1970-01-01
  • 2020-11-09
相关资源
最近更新 更多