【问题标题】:How to find absolute path within a project如何在项目中找到绝对路径
【发布时间】:2013-09-14 06:38:58
【问题描述】:

我有一个 mavenproject (java)。

现在该项目中有一个文件。一个文件,而不是 File 类的对象。 (实际上是txt)最后,这个文件将被捆绑在jar中。我想在项目执行期间使用它,我确实需要该文件的绝对路径。 当然,这取决于我使用的计算机。 如果我们谈论的是 File 对象,我会简单地使用 myfile.getAbsolutePath 找到绝对路径。

在这种情况下还有办法找到路径吗?

【问题讨论】:

  • 部署后,文件会驻留在jar、war、rar o ear文件中吗?

标签: java path absolute


【解决方案1】:

此文件将捆绑在 jar 中。

file 不再是文件系统上的独立文件。它没有唯一指向它的唯一文件系统路径。

打包后的打包文件(类似于zip)的一部分。这就是提供class.getResourceAsStream()classLoader.getResourceAsStream() 等方法的主要原因。

【讨论】:

    【解决方案2】:

    反思来拯救。你可以这样做:

    java.net.URL url = <your class name>.class.getProtectionDomain().getCodeSource().getLocation();
    
    java.io.File file = new java.io.File(url.toURI());
    

    file.toString() 会给你绝对路径。但请谨慎使用,因为使用 getProtectionDomain() 时存在安全隐患:请检查它是否适用于您的所有平台。

    【讨论】:

    • “你的班级名称”中将使用哪个班级?
    • 您知道在 jar 中的任何类,或与名称为 YourClassName.class 的文件关联的类。
    • 好吧,我遇到了一个 Maven 异常。我在考虑可能直接在 linux 系统上使用定位来获得它 - windows 是否有类似的方法=
    • 这很奇怪。我在 Windows 上执行此操作。
    • @newnewbie;我不确定:我相信如果有一个安全管理器正在运行,getProtectionDomain() 可能会失败。谷歌该功能以获取更多详细信息。
    猜你喜欢
    • 2023-04-08
    • 2013-08-25
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    相关资源
    最近更新 更多