java - 如何在线程 java 应用程序中确定运行时的主类?

标签 java runtime stack-trace classloader program-entry-point

我想在运行时确定我的应用程序启动的类名,即带有 main() 方法的类名,但我在另一个线程中,我的堆栈跟踪并没有一路回到原始类。

我搜索了系统属性和 ClassLoader 必须提供的所有内容,但一无所获。这些信息只是不可用吗?

谢谢。

最佳答案

请参阅 Tom Hawtin 对链接的评论。现在的解决方案是(仅限 Oracle JVM):

public static String getMainClassAndArgs() {
    return System.getProperty("sun.java.command"); // like "org.x.y.Main arg1 arg2"
}

仅使用 Oracle Java 7 进行测试。有关特殊情况的更多信息: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4827318

关于java - 如何在线程 java 应用程序中确定运行时的主类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/939932/

相关文章:

java - JAVA/Android中从字符串中提取多个子字符串

java - 美国宇航局世界风 : How do you fix these weird run time exceptions?

stack-trace - libc的backtrace_symbols()和libunwind的unw_get_proc_name()的偏移量不同

java - Java stacktrace 中的 $$ 和 <generated> 是什么意思?

android - 无法使用此堆栈跟踪找到我崩溃的原因

java - 为什么pluginManager.getExtensions的结果为空?

java - 在 JTextField 中设置可输入的字符

java - 使用java将XML文件转换为CSV文件

java - 动态改变 log4j 日志级别

mysql - 减去两列并在运行时对结果求和