java - 应用程序 C++/Java 依赖

标签 java c++ jvm java-native-interface dependencies

我有一个构建器 C++ 应用程序,它创建一个 VM 来处理文件中的元数据。 我的应用程序通过 JNI 与我的 ExtractMetadata.jar 通信。

当我用我的 IDE 测试它时,它工作正常(进程元数据工作正常)。但是当我创建安装应用程序并运行时,进程元数据运行不正常。

我记录了它,但似乎找不到该类。

jclass cls;
jmethodID midAllfield, midConstructor, mid1;
jobject newObj;
jboolean isCopy;
FILE *FileMeta;
String strFields, strValueFields, strFld;
JavaVM* jvm;
JNIEnv* env;
//  Attach this Thread to JVM
jint succGetJVM = gl_env->GetJavaVM(&jvm);
int succ1 = succGetJVM;
if(succGetJVM!=0)
    logging(sExtractMetaLogFile, "\n GetJavaVM(&jvm) : failure ");
else {
    logging(sExtractMetaLogFile, "\n GetJavaVM(&jvm) : Success :");
    logging(sExtractMetaLogFile, IntToStr(succ1));
}

jint  succAttchd = jvm->AttachCurrentThread((void**)&env, NULL);
int succ2 = succAttchd;
if(succAttchd!=0)
    logging(sExtractMetaLogFile, "\n AttachCurrentThread : failure ");
else{
    logging(sExtractMetaLogFile, "\n AttachCurrentThread : Success : ");
    logging(sExtractMetaLogFile, IntToStr(succ2));
}

cls = (*env).FindClass("ExtractMetaData");

jthrowable exc = env->ExceptionOccurred();
 if (exc) {
     jclass newExcCls;
     try {
        env->ExceptionDescribe();
     }
     catch (...) {
        ShowMessage("env->ExceptionDescribe()");
        return;
     }
     logging(sExtractMetaLogFile, "\n ExceptionDescribe : ");
     env->ExceptionClear();
 }
if(cls !=0)
{
       //....
}
else
{
    logging(sExtractMetaLogFile, "\n Tika Thread Not Found class : ExtractMetaData ");
}

我的日志结果是

GetJavaVM(&jvm) : Success :0
AttachCurrentThread : Success : 
ExceptionDescribe :  
Tika Thread Not Found class : ExtractMetaData 

为什么当我从我的 IDE 启动我的应用程序时它工作正常,而当我从我安装的应用程序运行它时却不能工作?!!

最佳答案

所以回答:

打开快捷方式的属性并将“开始于”字段设置为“C:\Program Files (x86)\xxx\bin\”

关于java - 应用程序 C++/Java 依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26356506/

相关文章:

java - 响应创建elasticsearch来自文件的响应期间出错

javascript - 无法在android中登录webview

c++ - 解决 C++ 头文件中的循环引用

java - 我应该 `new` 循环内部还是外部的对象?

java - 为什么我的程序越来越慢?

java - Eclipse 将 .war 文件放在哪里?

c# - 使用 UseShellExecute 启动 java

c++ - 无法调试完整代码以创建窗口

c++ - 大数组总和的优化(多线程)

JAVA DestroyJavaVM线程CPU过高