Java jarでハマったURL&URI&FileInputStream
どこにも書いてなかったので備忘録として紹介します。
まずこのコードをみてください。
String url = getClass().getResource("resources/memo.properties").toString(); URI uri = new URI(url); File file = new File(uri); InputStream inputStream = new FileInputStream(file);
jarにする前まではこのコードは動いていたんですね。
ですがJarに変換した途端下記のエラーが。。。
Exception in thread "main" java.lang.IllegalArgumentException: URI is not hierarchical
検索しても引っかからなかったので,
jarにする前と変わった場所はどこかなぁってデバッグしました。すると
変換前: System.out.println(url);
file:/Users/***名前***/Documents/MyMemo/MyMemo/resources/memo.properties
これが
変換後: System.out.println(url);
jar:file:/Users/***名前***/Documents/MyMemo/MyMemo/resources/memo.properties
とjar:がついたことがわかったんです!
ですので、url.replaceAll("jar:", "");とすると
上手く動作しました!