我正在尝试包装需要两个 *.db4o 数据文件的代码以便于使用。通过将文件放在 ${project_dir}/res/ 中并添加以下行,我已将数据文件添加到我的 eclipse .classpath 中:
<classpathentry kind="src" path="res"/>
到我的.classpath。
然后,我为我的包装类定义了一个默认构造函数,它不接受任何参数,但会找到 *.db4o 文件的路径(我用来设置的编译代码需要这些路径)。我获取路径的方法是:
String datapath = ClassLoader.getSystemResource("resource_name").getPath();
当我在 Eclipse 中调试/运行我的代码时,这非常有用。但是,当我将其导出为 jar 时,我可以看到 *.db4o 文件以及我编译的代码在 jar 中,但返回“datapath”的路径是以下形式:
datapath = ${pwd}/file:${absolute_path_to_jar}!/{resource_name}
jar 中的资源是否存在阻止绝对路径工作的东西?此外,为什么仅仅因为代码和资源位于 jar 文件中而导致行为不同?最后一点是,虽然我的应用程序旨在更广泛地使用(来自 PIG、python 等代码),但我正在从 Matlab 测试它,这是我获得分配给“数据路径”的奇数值的地方。
提前感谢您的任何回复。