java - 如何在cli中获取默认应用程序名称?

标签 java command-line-interface

我想创建一个在启动时显示应用程序名称的框架。针对命令行界面应用程序。

问题:如何以通用方式获取这样的应用程序名称?

例如 spring 提供了一个属性,但默认情况下没有设置:

@Value("${spring.application.name}")
private String appname;

而且我不想显式设置该属性。寻找某种“默认应用程序名称”。

在 Java EE 容器中还有以下选项:

String myApplicationName = (String) initialContext.lookup("java:app/AppName");  

但是 CLI 应用程序怎么样?如何获得某种通用应用程序名称?

最佳答案

如果我正确解释了你的问题,你能得到的最接近的是:

  1. 查找哪个类正在运行public static void main(String [] args)方法
  2. 获取其simpleName
  3. 将上述名称存储到系统属性中

为此,您有两个选择:

  • 调用Thread.currentThread().getStackTrace(),并检查其尾部元素。但这也必须在主线程中执行,否则您将无法检索正确的 StackTraceElement;
  • 调用 Thread:getAllStackTraces() ,并解析整个映射以识别主线程,获取相应的值,并选择其最后一个 StackTraceElement

一旦有了StackTraceElement,您就可以调用 StackTraceElement:getClassName()这将返回类似的内容

scala.tools.nsc.MainGenericRunner

拆分字符串,将其保存到系统属性中,然后就可以开始了。

希望对您有帮助。

关于java - 如何在cli中获取默认应用程序名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45755773/

相关文章:

java - 使用反射更改字符串的效果

java - 如何更改下面的代码以避免意外的类型错误(必需 : variable; found: value)?

command-line-interface - Pivotal Cloud Foundry 登录问题

命令行中的 PHP 服务器名称

PHP CLI 通过 php.ini 抑制警告

java - 安卓工作室 2.2。预览 1 错误 : "Please use JDK 8 or newer"

java - Google Collections 中的惰性不可修改列表

php - Slim 3 控制台执行 cron

php - 如何通过命令安装joomla扩展

java - 具有可比界面和通用列表的未经检查的转换警告