//**************** JavaTester.cpp ******************// #include #include #include int main() { const int numArgs = 2; JavaVMInitArgs vmArgs; JavaVMOption * options = new JavaVMOption[numArgs]; // folder where TextTest.class is located options[0].optionString = (char*)"-Djava.class.path=D:"; if ( numArgs > 1 ) options[1].optionString = (char*)"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9009"; vmArgs.version = JNI_VERSION_10; vmArgs.nOptions = numArgs; vmArgs.options = options; vmArgs.ignoreUnrecognized = false; char jvmPath[512] = "C:\\OpenJDK14\\bin\\server\\jvm.dll"; // custom installation // char jvmPath[512] = "C:\\Program Files\\Java\\jdk-14.0.1\\bin\\server\\jvm.dll"; // standard installation HMODULE hmod = LoadLibraryA( jvmPath ); if ( ! hmod ) return 1; typedef void createJVMFunctionPtr(JavaVM**, void**, void*); createJVMFunctionPtr * createJVMFunction = (createJVMFunctionPtr*)GetProcAddress( hmod, "JNI_CreateJavaVM" ); if ( ! createJVMFunction ) return 2; JavaVM * jvm = nullptr; JNIEnv * env = nullptr; createJVMFunction( &jvm, (void**)&env, &vmArgs ); if ( ! jvm ) return 3; if ( ! env ) return 4; jclass cls = env->FindClass( "TextTest" ); jmethodID mid = env->GetStaticMethodID( cls, "RunTest", "()V" ); env->CallStaticVoidMethod( cls, mid ); // kludge to keep the swing window from disappearing for 30 seconds Sleep( 30000 ); jvm->DetachCurrentThread(); return 0; } //**************** END JavaTester.cpp ******************//