Ich initialisiere die Java-VM mit dem folgenden C++ - Code. JNI_CreateJavaVM
löst eine 0xC0000005
Ausnahme aus, ist aber trotzdem erfolgreich, wenn ich sie ignoriere.Ausnahme 0xC0000005 von JNI_CreateJavaVM (jvm.dll)
'Jni.exe' (Win32): Geladen 'C: \ Tools \ Java \ Jdk8.77x86 \ jre \ bin \ zip.dll'. Die PDB-Datei kann nicht gefunden oder geöffnet werden.
Ausnahme bei 0x02900282 in Jni.exe geworfen: 0xC0000005: Zugriffsverletzung beim Lesen der Position 0x00000000.
'Jni.exe' (Win32): Geladen 'C: \ Windows \ SysWOW64 \ shell32.dll'. Die PDB-Datei kann nicht gefunden oder geöffnet werden.
Vergesse ich, etwas zu setzen oder zu tun oder ist das "normales" Verhalten?
#include <array>
#include "jni.h"
int main(int argc, char const* args[])
{
JavaVM* jvm;
JNIEnv* env;
std::array<JavaVMOption,1> options;
options[0].optionString = "-Djava.class.path=C:/Users/Thomas/Documents/Visual Studio 2015/Projects/Jni/x64/Debug";
options[0].extraInfo = nullptr;
JavaVMInitArgs vm_args;
vm_args.version = JNI_VERSION_1_8;
vm_args.options = options.data();
vm_args.nOptions = options.size();
vm_args.ignoreUnrecognized = false;
auto rc = JNI_CreateJavaVM(&jvm, reinterpret_cast<void**>(&env), &vm_args);
if(rc == JNI_OK)
{
jvm->DestroyJavaVM();
}
}
Dies geschieht sowohl für Release und Debug und für beide x86 und x64-Builds.
Tritt die Ausnahme auf, wenn Sie das Programm eigenständig ausführen, nicht in MSVC? – apangin
@apangin Die Ausnahme wird in jvm.dll behandelt. Das Programm stürzt nicht ab. Es funktioniert gut. Wie würde ich die Ausnahme ohne MSVC erkennen? Wenn ich C00000005 unter Win32-Ausnahmen deaktiviere, taucht die Meldung nur in der Ausgabekonsole auf, und es gibt keine Unterbrechung. – Thomas