2

我正在创建一个简单的 Win32 控制台应用程序,它加载具有它的表单文件的 Java GUI。

但是,我遇到了一些问题..这是代码的一部分..

    if(status != JNI_ERR)
{
    cls = env->FindClass("PWNJava");

    if(cls != 0)
    {
        cout<<"class found!"<<endl;

        mid = env->GetStaticMethodID(cls, "main", "([Ljava/lang/String;)V");

        env->CallStaticVoidMethod(cls, mid);

    }
    else 
    {
        printf("Can't find class\n");
        return;
    }

    jvm->DestroyJavaVM();
    cout<<"\nJVM Destroyed!!"<<endl;


}

好的.. 我的问题是,当 Java GUI 应用程序启动时,控制台应用程序会停止。

关于底部的代码,cout<<"\nJVM Destroyed!!"<

这个“JVM被破坏了!!” 永远不会在控制台 Windows 上显示...在我关闭 Java GUI 应用程序后,控制台应用程序不再工作。它只显示“按任意按钮关闭”。

控制台程序似乎在“jvm->DestroyJavaVM();”处终止 行..所以 JVM Destroyed 消息永远不会弹出。

我什至通过创建一个新线程并运行 java 来尝试它,但是在我关闭 Java GUI 程序后它无论如何都会杀死我的主线程。

如何解决 Java Gui 应用程序自动终止控制台程序的问题?

以下是可下载源代码的地址:(MSVS 2008 for C++ 和 Netbeans for Java) http://cfile209.uf.daum.net/attach/241D3F3D5214C4ED07ECE1

4

1 回答 1

1

您正在将框架的默认关闭操作设置为EXIT_ON_CLOSE。这使得程序在框架关闭时终止——不仅仅是 JVM,而是整个程序。

使用DISPOSE_ON_CLOSE而不是EXIT_ON_CLOSE.

于 2013-08-22T10:09:45.090 回答