-1

「実行中の EXE のパス」は、C#、C++、VB などで記述された Windows アプリケーションに対して適切に定義されています。

- Windows 上の Java アプリケーションは「EXE アプリケーション」ではなく、EXE ファイルではなくクラスファイルまたは jar ファイルが開始されます。そのため、Java アプリケーションの場合、「ExePath」という用語は「MainClassPath」または「JarPath」に翻訳する必要があります。

- 場合によっては、プログラマはアプリケーションの jar または MainClass の物理パスを知る必要があります。(たとえば、同一のクラスと同一のメソッドを使用して、Java と C# の両方で大規模なプロジェクトを開発する場合)

-他のstackoverflowユーザーのおかげで、このステートメントは仕事をします:

String exePath = URLDecoder.decode(this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8")

そして今、私の質問があります:

同じコードを helper/utils jar-library に入れると、 helperlib.jar のパスが返されますが、 MainClass/AppJar のパスは返されません!

-

したがって、最終的なgetExePath()ヘルパー メソッドは次のようになります。

return(URLDecoder.decode(Thread.currentThread().getStartingThread().getMainClass().getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8"));

( javaにgetStartingThread()やのようなメソッドしかなかった場合...)getMainClass()

-

最終的な解決策を教えてください。これらの手順をどのように実装できますか。

  • 開始スレッドを取得する
  • 開始スレッドのメイン クラスを取得する
  • メイン クラスのパスを取得する
4

1 に答える 1