我一直在尝试从同一个jar文件中找到一个资源(一个Windows可执行文件),我想将它复制到当前目录,以便我可以使用ProcessBuilder来运行它。
我尝试了很多方法,(类加载器,FileSystem等),但问题似乎是Eclipse在调试过程中没有表现出来。 这意味着它似乎不是一个我希望它的文件,虽然它是打包的(我确认)。
如果Eclipse的行为与正常执行不同,那会很奇怪,所以我缺少什么?
以下是我想要的工作(我试过的方法之一):
try {
File file = new File(this.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
final URI jarFileUri = URI.create("jar:file:" + file.toURI().getPath());
final FileSystem fs = FileSystems.getFileSystem(jarFileUri);
String pattern = "db.exe";
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:" + pattern);
System.err.println(matcher.toString());
} catch(Exception e) {
e.printStackTrace();
}
在FileSystems.getFileSystem(jarFileUri)发生失败,返回null。
jar文件的结构: Jar file structure text file
bin文件夹中的根结构:
新信息 实际问题原来是: 为什么jar文件中有一些文件夹但不是Eclipse创建的二进制文件夹? 在Build Configuration中,选择包含文件夹,但它不会打包到bin目录中,只能打包到jar中。 我如何告诉Eclipse还将文件夹放入bin目录,以便我可以在调试期间访问它?