1

gcj によってコンパイルされた Java プログラム内から、ユーザーがプログラムを開始するために実行した実行可能ファイルの名前を見つける方法はありますか?

C では、argv[0] (main 内から) が名前ですが、Java では、main に指定された args 配列には、メイン クラスへの引数のみが含まれます。通常の Java コマンド ラインで実行する場合、実行可能ファイルは常に java (または java.exe) になるため、これはある程度理にかなっています。

ただし、gcj によってコンパイルされた Java プログラムを実行する場合、ユーザーが実行した実行可能ファイルの名前が役立つ情報になる場合があります。理想的には、/proc の読み取りなどのプラットフォーム固有のアプローチに頼らずにその名前を見つけたいと思いますが (Windows に相当するものは何でも)、おそらくそれは不可能です。

4

1 に答える 1

6

Google Code Search でよく検索した結果、プログラム名がgnu.gcj.prognameプロパティに隠されていることがわかりました。サンプルプログラム:

public class ProgName {
    public static void main(String... args) {
        System.out.println(System.getProperty("gnu.gcj.progname"));
    }
}

追加する編集:ランタイム プロパティgnu.gcj.prognameにも記載されているため、幸いなことに、これは単なる内部実装の詳細ではありません。libgcj

于 2010-03-05T03:10:27.607 に答える