java - 如何通过代码获取编译后的jar文件的路径?
问题描述
我想为我的 java 程序使用图像文件,为此我需要File
对象。但是我有一个问题,当我构建我的项目时,项目名称.jar
的名称末尾有一个,这使得 File 对象像new File("..\\Project\\src\\ImageDirectory\\Image.png")
无用一样,因为该目录不存在。
我发现我可以在技术上遍历计算机上的所有目录,但我不想这样做,因为大量目录和硬盘驱动器可能需要一些时间。
那么,是否有一种可靠且简单的方法来获取 jar 文件当前所在的目录?
我的 IDE 是 InellijIDEA
解决方案
您可以使用 Path 来执行此操作:
Path path = Paths.get(YourMainClass.class.getProtectionDomain().getCodeSource().getLocation().toURI());
Path 有几种方法可以获取更多信息。
例如,我在桌面中有这个 JAR,我正在打印这个:
System.out.println(path);
System.out.println(path.getRoot());
System.out.println(path.getParent());
结果是:
java -jar C:\Users\gmunozme\Desktop\Test.jar
C:\Users\gmunozme\Desktop\Test.jar
C:\
C:\Users\gmunozme\Desktop
看看,希望你能用。
推荐阅读
- javascript - 如何使用 PHP 和 JavaScript 创建基于字母字符的过滤器?
- django - 不允许小于特定尺寸的图像
- jmeter - 如何在 JMeter 中关联这些值?
- python - Heroku Dyno 小时问题
- asp.net-core-mvc - 按下后退按钮时如何刷新页面?
- android - Android GridLayout 中只有灰色框
- python - 给定 Python 中的概率,从 LARGE 列表中选择项数
- aem - 将 sling 模型声明为 (adaptables = Resource.class) 有什么意义
- google-play-console - 为什么 google 允许某些公司拥有 2 个帐户 google play 开发人员?
- python - 为什么 LXML Write 不能很好地打印到新文件?