我有一个 mavenproject (java)。
现在该项目中有一个文件。一个文件,而不是 File 类的对象。(实际上是txt)最后,这个文件将被捆绑在jar中。我想在项目执行期间使用它,我确实需要该文件的绝对路径。当然,这取决于我使用的计算机。如果我们谈论的是 File 对象,我会简单地使用 myfile.getAbsolutePath 找到绝对路径。
在这种情况下还有办法找到路径吗?
此文件将捆绑在 jar 中。
该文件不再是文件系统上的独立文件。它没有唯一指向它的唯一文件系统路径。
打包后的打包文件(类似于 zip)的一部分。这就是提供class.getResourceAsStream()和classLoader.getResourceAsStream()等方法的主要原因。
反射来拯救。你可以这样做:
java.net.URL url = <your class name>.class.getProtectionDomain().getCodeSource().getLocation();
java.io.File file = new java.io.File(url.toURI());
file.toString()
会给你绝对路径。getProtectionDomain()
但请谨慎使用,因为使用: 检查它是否适用于您的所有平台时存在安全隐患。