代码之家  ›  专栏  ›  技术社区  ›  Matt Sheppard

GCJ编译的Java程序中的二进制名

  •  1
  • Matt Sheppard  · 技术社区  · 14 年前

    在GCJ编译的Java程序中,是否有任何方法来查找用户启动程序的可执行文件的名称?

    在C中,ARGV〔0〕(从main main)是名称,但是在Java中,给main的ARGS数组只包含主类的参数。当使用正常的Java命令行运行时,这是有意义的,因为可执行文件始终是Java(或Java.exe)。

    然而,当运行由GCJ编译的Java程序时,用户运行的可执行文件的名称可能是有用的信息。理想情况下,我希望在不使用特定于平台的方法(比如reading/proc)的情况下找到这个名称(对于windows来说,无论是什么等价的方法),但这可能是不可能的。

    1 回复  |  直到 14 年前
        1
  •  6
  •   C. K. Young    14 年前

    经过对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 幸运的是,这不仅仅是一个内部实现细节。