我正在使用Jasper库来调用prolog文件。这就是呼叫的完成方式:
sics = new SICStus();
sics.load( "/a/string/with/path/to/source.pl" );
我要做的是生成包含源文件的jar可执行文件。问题是我无法找到一种方法来获取jar中包含的资源的路径。到目前为止,我能够获得jar的URL:
URL url = getClass().getResource( file_name );
String path = url.getPath();
问题是如何在jar中为对象" sics" 提供源文件 source.pl 的路径?
是什么让我理解了这个问题:
java中的文件只能代表直接文件系统文件,而不能代表文件系统文件 在zip / jar档案中。 要解决这个问题: 尝试使用
getClass().getResourceAsStream()
并使用{而不是File
。
链接: URI is not hierarchical exception when running application from JAR
答案 0 :(得分:2)
如果我没有误解你的要求,猜猜这个问题已经回答了。请查看此处:How to get the path of a running JAR file?或此处How to get a path to a resource in a Java JAR file以及此处Loading a file relative to the executing jar file。