【问题标题】:How to access absolute file path of Jar being executed?如何访问正在执行的 Jar 的绝对文件路径?
【发布时间】:2013-03-04 13:26:23
【问题描述】:

我知道这个问题被问了很多,但以前的答案似乎对我没有用。

如果我让我的应用程序成为一个可执行的 Jar,有没有办法知道该 Jar 在执行时在文件系统上的位置?我的应用需要知道,所以它可以从它的 jar 中提取一个文件夹(通过将其视为一个 zip 文件)到指定的目录。

编辑:感谢所有做出贡献的人,但我认为这是一个死胡同。我得试试别的。很抱歉浪费了大家的时间。我会继续检查这个问题,所以如果有人破解它,请回答:D

不管怎样,这是我的测试代码:

    package jarProblem;

import java.io.File;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class Main {

    public Main () {

        ClassLoader loader = Main.class.getClassLoader();

        String path = loader.getResource("jarProblem/Main.class").getPath();

        File file = new File(path);

        String pathToJar = file.getParentFile().getAbsolutePath();

        JOptionPane.showMessageDialog(new JFrame(), new JLabel(pathToJar),"CurrentFolder", JOptionPane.PLAIN_MESSAGE);

        System.exit(0);
    }

    public static void main (String[] args) {

        new Main();
    }

}

【问题讨论】:

  • 当我将它添加到我的测试代码时,该问题的接受答案显示“rsrc:./”
  • 我刚刚使用它,它对我来说完全没问题。您的 JAR 文件在哪个文件夹中?
  • 我的桌面(C:/Users/CptSpike/Desktop)
  • 多么有趣。您是否尝试过该线程中的任何其他建议?

标签: java jar absolute-path


【解决方案1】:
System.getProperty("user.dir");

【讨论】:

  • 返回 javaw.exe 所在的“C:/Windows/System32”
  • 您的 javaw 位于 System32 文件夹中?据我所知,javaw 默认安装在 Program Files/Java/jdk/bin... 也许您的环境变量正在返回此路径。
  • 我觉得这很奇怪。我的 JDK 在 Program Files/Java 中,并且也有一个 javaw.exe。无论哪种方式,它都没有指向我的桌面:(
  • 看看你的环境变量和那里的路径...似乎是错误的配置
  • 对我来说似乎没什么特别的。 C:/Windows/System32.javaw.exe 根本没有被提及,有趣的是
【解决方案2】:

你试过 Path 类吗?它拥有您想要的一切。

【讨论】:

  • 不能说我听说过 - 我现在会调查一下 编辑:我不确定如何将 Path 用于未知文件位置?
  • 它在 Java 7 中。这个类完成了所有与路径相关的事情。
  • 评论用于来自 OP 的澄清。没有答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 2021-04-02
  • 2017-08-07
  • 1970-01-01
  • 2010-09-24
  • 2011-08-06
相关资源
最近更新 更多