java - 如何找出JVM或现有进程调用了main方法?

标签 java

考虑以下代码

public static void main(String...arg){
//do something
if(<<the method has called by a new process>>){System.exit(0);}
else{System.setProperty("main_result","0");return;}
}

main方法会被JVM或现有进程的单独进程调用,现在我怎样才能找到它?
提前致谢

最佳答案

让我们澄清一下:可能有另一个带有 main 的类已启动,或者 main 以某种方式再次被调用。

通常您想要调用 System.exit(0) (或 return;?),但是当从程序本身调用时,您希望以 System 结束.setProperty("main_result","0");.

public static void otherMain(String[] args) {  
    Main.main(args);
}

public static void main(String[] args) {  

    ...

    StackTraceElement[] elems = Thread.currentThread().getStackTrace();
    //for (StackTraceElement elem : elems) {
    //    System.out.printf("%s%n", elem.getClassName());
    //}
    if (elems.length > 2) { // [0] Thread [1] main
        System.setProperty("main_result","0");
    }
}

关于java - 如何找出JVM或现有进程调用了main方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22500657/

相关文章:

java - JMH 如何测量低于粒度值的执行时间?

java - 如何从 jvmti 中的 jobject 获取类名

java - Android:使用 SSL 交换消息时出现问题

java - GWT:从外部资源获取编译时区域设置列表

java - Tomcat 6.0.28 在浸泡测试期间由于线程阻塞而无响应

java - Selenide:无法导入其方法

java - 如何在 REST API 中表达查询参数之间的高级表达式?

c# - 持久(基于磁盘)R 树(或 R* 树)

java - 以编程方式从 Java 应用程序创建 Android 虚拟设备

java - CXF生成Java Bean Skeleton不制作setter和操作类