我正在尝试将需要两个* .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”的路径的形式如下:
datapath = ${pwd}/file:${absolute_path_to_jar}!/{resource_name}
是否有一些资源在jar内部阻止绝对路径工作?另外,为什么行为不同只是因为代码和资源存在于jar文件中?最后一点需要注意的是,虽然我的应用程序是为了更广泛的使用(来自PIG,python等代码),但我正在从Matlab进行测试,这是我将奇数值分配给“datapath”的地方。
提前感谢您的回复。
答案 0 :(得分:0)
getSystemResource()返回资源的URL。如果您的资源是压缩在一个jar文件中,那么URL将指向它(使用&#34;!&#34;表示法)。 getPath()返回&#34;路径&#34; URL的一部分,并不总是实际的文件路径。 URL可以是众多内容之一,而不仅仅是文件。