1

私はJavaアプリケーションを持っていて、それをとしてバンドルしていApp.jarます。私が使用したサードパーティのツールがいくつかあります(それを呼びましょうNumberGenerator)。App.jarプロセスを開始し、を呼び出しNumberGeneratorて出力を取得します。実行可能ファイルを参照するために、相対パスを使用しましたがnew File("lib/NumberGenerator.exe")、すべてうまく機能します。

Macでは、これを使用してアプリケーションをバンドルしました。これにより、アプリケーションランチャーが自動的に生成されます。ランチャーをクリックして実行すると、アプリケーションが起動します。ただし、ホームディレクトリは、jarファイルが置かれていた場所ではなく~ieとして設定されます。/Users/Jatinしたがって、私のアプリケーションはlibフォルダを検出できません(明らかにその場所にないため)

jar私のJavaコードで、ホームフォルダを自分が横たわっていた場所として設定するにはどうすればよいですか?

4

4 に答える 4

2

Linuxでも同様の問題がありました。AppBundlerではなくosxについてはよくわかりませんが、Linuxではこのスクリプトを作成して解決しました

#!/usr/bin/env sh
java -Duser.dir=$(pwd) -jar myapp.jar

スクリプトをダブルクリックして実行できれば機能する可能性があります...ダブルクリックしてOSXでシェルスクリプトを実行する方法を参照してください。

于 2013-03-11T07:54:02.443 に答える
2
return new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());

このスレッドを確認するだけです。実行中のJARファイルのパスを取得するにはどうすればよいですか?

于 2013-03-11T07:58:08.993 に答える
1

私は2つのアプローチを見ます:

  • で、ここで引用されている記事で説明されているように、相対をInfo.plist指定します。java.library.path$JAVAROOT

    <key>Java</key>
    <dict>
    ...    
        <key>Properties</key>
        <dict>
            <key>java.library.path</key>
            <string>$JAVAROOT/</string>
        </dict>
    ...    
    </dict>
    
  • Java Web Startを使用すると、OSおよびアーキテクチャごとにネイティブリソースを管理できます。

于 2013-03-11T08:20:00.087 に答える
0

あなたはこれを試すことができます:

System.setProperty("user.home", "your-dir");
于 2013-03-11T07:44:14.237 に答える