gpt4 book ai didi

resources - ClassLoader.getSystemResource(...).getPath() 似乎返回了错误的路径

转载 作者:行者123 更新时间:2023-12-03 08:12:52 25 4
gpt4 key购买 nike

我正在尝试包装需要两个 *.db4o 数据文件以便于使用的代码。我已将数据文件添加到我的 eclipse .classpath 中,方法是将文件放在 ${project_dir}/res/中并添加以下行:

<classpathentry kind="src" path="res"/>

到我的.classpath。

然后我为我的包装类定义了一个默认构造函数,它不带任何参数但会查找 *.db4o 文件的路径(我用来设置的编译代码需要这些路径)。我获取路径的方法是:

String datapath = ClassLoader.getSystemResource("resource_name").getPath();

当我在 eclipse 中调试/运行我的代码时,这非常有效。但是,当我将它导出为 jar 时,我可以看到 *.db4o 文件以及我编译的代码都在 jar 中,但返回到“数据路径”的路径的形式为:

datapath = ${pwd}/file:${absolute_path_to_jar}!/{resource_name}

jar 中的资源是否有什么东西阻止了绝对路径的工作?另外,为什么仅仅因为代码和资源存在于 jar 文件中,行为就会不同?最后要注意的是,虽然我的应用程序旨在更广泛地使用(来自 PIG、python 等代码),但我正在从 Matlab 对其进行测试,这是我将奇数值分配给“数据路径”的地方。

提前感谢您的任何回复。

最佳答案

getSystemResource() 返回资源的 URL。如果您的资源被压缩在一个 jar 文件中,那么 URL 将指向它(使用“!”符号)。 getPath() 返回 URL 的“路径”部分,并不总是实际的文件路径。 URL 可以是许多事物之一,而不仅仅是一个文件。

关于resources - ClassLoader.getSystemResource(...).getPath() 似乎返回了错误的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13140690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com