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 回答