相关疑难解决方法(0)

从main()方法中获取可执行jar的名称

我创建了一个可执行jar并使用commons-cli为用户提供了在启动客户端时指定命令行参数的能力.一切正常.但是,当我打印jar的用法语句时,我想显示以下内容:

usage: java -jar myprog.jar <options> <file>
--help Display the help message
--debug Enable debugging
....
Run Code Online (Sandbox Code Playgroud)

使用commons-cli可以轻松打印所有选项.然而,"使用"线是头部刮擦.我似乎无法找到从args []获取传递给应用程序的"myprog.jar"名称的方法.

这有什么简单的方法吗?我可以使用一个非常复杂的方法从我的类的类加载器返回跟踪并找出它是否包含在jar中,但这似乎是一个相当难看的答案,应该是一个非常简单的问题.

private String getPath(Class cls) {
    String cn = cls.getName();
    String rn = cn.replace('.', '/') + ".class";
    String path =
            getClass().getClassLoader().getResource(rn).getPath();
    int ix = path.indexOf("!");
    if(ix >= 0) {
        return path.substring(0, ix);
    } else {
        return path;
    }
}
Run Code Online (Sandbox Code Playgroud)

java program-entry-point apache-commons-cli

29
推荐指数
1
解决办法
3万
查看次数

27
推荐指数
3
解决办法
1万
查看次数

在Java应用程序中为dev和release提供各种URL端点的正确方法是什么?

我正在使用JavaFX,Gradle,javafx-gradle-plugin构建Java桌面应用程序.此应用程序连接到我也构建的服务器.当我编译发布版本,运行时gradle jfxNative,我希望它与生产服务器通信; 但除此之外,我希望它与localhost交谈.

什么是正确的Java/Gradle处理方式?某种编译配置文件?

java javafx gradle

14
推荐指数
2
解决办法
623
查看次数