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

Mat*_*ard 1 c java command-line gcj

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

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

但是,在运行由gcj编译的Java程序时,用户运行的可执行文件的名称可能是有用的信息.理想情况下,我想找到这个名称,而不是诉诸平台特定的方法,如阅读/ proc(以及任何与Windows相同的方法),但也许这是不可能的.

Chr*_*ung 6

经过大量搜索Google Code Search后,我发现该程序名称存放在该gnu.gcj.progname属性中.示例程序:

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

编辑添加:gnu.gcj.progname也在libgcj运行时属性中记录,所以幸运的是,这不仅仅是内部实现细节.