有没有办法从gcj编译的Java程序中找出用户为启动程序而运行的可执行文件的名称?
在C中,argv [0](来自main内部)是名称,但在Java中,赋予main的args数组仅包含主类的参数。使用普通的java命令行运行时,这是有道理的,因为可执行文件始终是java(或java.exe)。
但是,当运行由gcj编译的Java程序时,用户运行的可执行文件的名称可能是有用的信息。理想情况下,我想找到这个名称,而不是采用平台特定的方法,如阅读/ proc(以及Windows的等价物),但也许这是不可能的。
答案 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中,幸运的是,这不仅仅是内部实现细节。