私のコードは JAR ファイル内で実行され、そのファイルの完全なパスを取得する必要があります。たとえば、私の JAR は example.jar と呼ばれ、D:\example\ にあるため、その jar 内のコードで "D:\example\example.jar" を取得する必要があります。そのパスを取得するために多くの方法を試しましたが、どれも正しく機能しませんでした。
それらの1つは
getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath()
多くの人がこれでうまくいくと言っていますが、私には "rsrc:./" が返されます。
その後検索したところ、MANIFEST.MF に次のものが含まれていることがわかりました。
Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: Example
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
それが何を意味するのかわかりませんが、そのRsrcのものを削除して他のものをそれに置き換えると、jarが壊れていると表示されます. これがうまくいかない原因だと思います。これが何を意味するか知っている人はいますか?
PS: BAT ファイルを使用して JAR を実行しています。