GUIアプリケーションの挑戦

プログラミング初心者ですが頑張ります。いろんな言語に興味があります。GUIやデータベース関連のアプリケーションを開発しています。

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:", "");とすると
上手く動作しました!