Java:找到当前工作的 JAR

标签 java file jar working-directory

我知道系统属性“user.dir”返回当前工作目录;包含当前正在运行的文件的目录。

我在想,怎样才能更进一步呢?我需要找到当前工作的文件。我正在编写一个有点像自动更新程序的小应用程序,我需要知道需要更新的文件。例如,如果我从 C:/test.jar 运行一个文件,我想在代码中实际知道正在运行的文件的当前位置是 C:/test。 jar 以便我可以向其中写入(新)数据。

我试过这样的方法:

    ClassLoader loader = Test.class.getClassLoader();
    System.out.println(loader.getResource("Test.class"));

然而,它打印出:

3/5/12 7:50:16.914 PM [0x0-0x31031].com.apple.JarLauncher: rsrc:Test.class

(我在 Mac 上运行它 - 我从控制台得到了那一行)。 任何帮助是极大的赞赏。谢谢!

最佳答案

归功于 Fab在以下帖子中: Jar path+name from currently running jar

String path = Test.class.getProtectionDomain().getCodeSource().getLocation().getPath();
String decodedPath = URLDecoder.decode(path, "UTF-8");

关于Java:找到当前工作的 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9576894/

相关文章:

file - Node : How to wait until a file is completed before processing it?

java - 从 gradle 依赖项构建 jar 文件

java - 将外部 jar 文件添加到 OSGi 应用程序会导致问题

java - 在 lombok Builder 中使用 Jackson、@JsonIdentityInfo 和 @JsonDeserialize 时出现 UnrecognizedPropertyException

java - AutowireCapableBeanFactory.autowireBeanProperties() 似乎不适用于 xml 配置的上下文

java - ..RoleService 中构造函数的参数 0 需要一个名为 'entityManagerFactory' 的 bean,但无法找到

java - 运行 JAR 时为 "java.lang.ClassNotFoundException: javax.ejb.EJBObject"

java - CouchBase Lite Java 支持在 Android 系统上运行

python - 即使我包含了库,python 也会出错

C 中 deque 可以存储 char* 吗?