我已经能够在 Netbeans 和 JAR 文件(例如 ImageIcons)中加载资源,但今天从 JAR 文件运行程序时无法从同一目录“读取”。我想列出类路径目录中的目录和文件,但是当我从 JAR 文件运行程序时,该目录变得不可读。它在 Netbeans 中运行良好。
tileDirectory = new File(TileDirectoryLister.class.getResource("/resources/images/tiles").getPath());
jta.append("\ntile 目录的类路径是:"
+“\n\t”+tileDirectory.getPath());
jta.append("\ntile目录可读:"+tileDirectory.canRead());
当从 Netbeans 运行时,它会打印 true;当从 JAR 文件运行时,它会打印 false。 当我从 JAR 文件运行时,为什么 canRead
打印 false
?
最佳答案
文件代表文件系统上的路径。您的图标位于 jar 文件内。您不能使用文件来访问它们。
要访问 jar 文件中的某些资源,只需使用
SomeClass.class.getResourceAsStream("/resources/images/tiles/SomeIcon.png");
获取输入流,或者
SomeClass.class.getResource("/resources/images/tiles/SomeIcon.png");
获取 URL。
关于java - Netbeans 中的目录可读,但从 JAR 文件运行时不可读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13614499/