私のアプリケーションがフォルダにあるtxtファイルをロードします。これは、(私は、Eclipseから実行したときに動作し、私はJarファイルにエクスポートしたときにしません:JARファイルでURL getResourceが動作しない
URL url = getClass().getClassLoader().getResource("batTemplate.txt");
java.nio.file.Path resPath;
String bat = "";
try {
resPath = java.nio.file.Paths.get(url.toURI());
bat = new String(java.nio.file.Files.readAllBytes(resPath), "UTF8");
} catch (URISyntaxException | IOException e1) {
e1.printStackTrace();
}
注:ここでは
は、私は、ファイルをロードしています方法です生成されたJARに必要なlibを抽出します)。 ファイルがJARファイルに存在するため、そのファイルが抽出されていることがわかりました。また、イメージが動作します。
エラーMSG:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException:
Illegal character in path at index 38: file:/C:/DataTransformation/Reports Program/ReportsSetup.jar
at com.sun.nio.zipfs.ZipFileSystemProvider.uriToPath(ZipFileSystemProvider.java:87)
at com.sun.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:166)
at com.sun.nio.zipfs.ZipFileSystemProvider.getPath(ZipFileSystemProvider.java:157)
at java.nio.file.Paths.get(Unknown Source)
at ReportSetup$13.mouseReleased(ReportSetup.java:794)
私はまた、しかし、彼らはJARファイルの外に/ URLをファイルを参照し、ここでは同様の問題を見ました。
が重複する可能性:
あなたは単ににInputStreamReaderからテキストを読むことができます:あなたは、一時ファイルにリソースをコピーすることができ
:あなたは、スキャナを使用することができます://stackoverflow.com/questions/941754/how-to-get-a-path-to-a-resource-in-a-java-jar-file – NageN
.jarエントリはファイルではありません。パス*にリソースを変換することはできません。代わりにgetResourceAsStreamを使用して読み取ります。 – VGR
@VGRありがとう、getResourceAsStreamを変更しました。そして今働いています:) – Shank