我想创建一个在statup上显示应用程序名称的框架。定位命令行界面应用程序。
问题:如何以通用方式获取此类应用程序名称?
例如spring提供了一个属性,但默认情况下没有设置:
@Value("${spring.application.name}")
private String appname;
我不想明确设置该属性。寻找某种“默认应用程序名称”。
在Java EE容器中还有以下选项:
String myApplicationName = (String) initialContext.lookup("java:app/AppName");
但CLI
个应用怎么样?我怎样才能获得某种通用的应用程序名称?
答案 0 :(得分:2)
如果我正确地解释了你的问题,你可以得到的最接近的是:
public static void main(String [] args)
方法simpleName
为了做到这一点,你有两个选择:
Thread.currentThread().getStackTrace()
,并检查其尾部元素。但是这也必须在主线程中执行,否则你将无法检索到正确的StackTraceElement
; StackTraceElement
获得StackTraceElement
后,您可以拨打StackTraceElement:getClassName(),这将返回类似
scala.tools.nsc.MainGenericRunner
拆分字符串,将其保存到系统属性中,然后就可以了。
希望它会对你有所帮助。