gcj编译的java程序中的二进制名称

时间:2010-03-05 02:54:37

标签: java c command-line gcj

有没有办法从gcj编译的Java程序中找出用户为启动程序而运行的可执行文件的名称?

在C中,argv [0](来自main内部)是名称,但在Java中,赋予main的args数组仅包含主类的参数。使用普通的java命令行运行时,这是有道理的,因为可执行文件始终是java(或java.exe)。

但是,当运行由gcj编译的Java程序时,用户运行的可执行文件的名称可能是有用的信息。理想情况下,我想找到这个名称,而不是采用平台特定的方法,如阅读/ proc(以及Windows的等价物),但也许这是不可能的。

1 个答案:

答案 0 :(得分:6)

经过大量搜索Google代码搜索后,我发现程序名称隐藏在gnu.gcj.progname属性中。示例程序:

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

编辑添加:gnu.gcj.progname也记录在libgcj Runtime Properties中,幸运的是,这不仅仅是内部实现细节。