简体   繁体   English

如何使用JNI在Builder C ++应用程序中启动JVM

[英]How to use JNI to start JVM in builder C++ application

So i need to use jni to call java method. 所以我需要使用jni来调用java方法。 i started with this code : 我从以下代码开始:

JNIEnv *env1;
JavaVM**  jvm1;
JavaVMInitArgs vm_args1;
JavaVMOption options1[1];
options1[0].optionString = "-Djava.class.path=D:\\Java Src\\TestStruct"; //Path to the java source code
vm_args1.version = JNI_VERSION_1_6; //JDK version. This indicates version 1.6
vm_args1.nOptions = 1;
vm_args1.options = options1;
vm_args1.ignoreUnrecognized = 0;

int reAt = JNI_CreateJavaVM(jvm1, (void**)&env1, &vm_args1);
if(reAt < 0)
    Label1->Caption = "failed";
else
    Label1->Caption = "Success";

I convert jvm.lib to OMF lib for to use in my builder C++ Application : 我将jvm.lib转换为OMF lib以便在我的构建器C ++ Application中使用:

 COFF2OMF jvm.lib jvm2.lib

I added jvm2.lib to the library path to fixe link error about JNI_CreateJavaVM function. 我将jvm2.lib添加到库路径中,以修复有关JNI_CreateJavaVM函数的链接错误。

Now my application compile without error. 现在,我的应用程序编译没有错误。

But it crash when it call JNI_CreateJavaVM function. 但是,当它调用JNI_CreateJavaVM函数时会崩溃。

I added the jvm.dll near my .exe 我在.exe附近添加了jvm.dll

What is the pb in there steps?? 那里的铅是多少?

How can fixe it? 如何解决?

Thx 谢谢

The first argument to JNI_CreateJavaVM should be a valid pointer to JavaVM* : JNI_CreateJavaVM的第一个参数应该是指向JavaVM*的有效指针:

JavaVM* jvm1;
int reAt = JNI_CreateJavaVM(&jvm1, ...);

In your example, jvm1 is uninitialized. 在您的示例中, jvm1未初始化。

Consult the documentation for details. 有关详细信息,请查阅文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM