int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ if (!extractResource()) return 3; if (!loadJVM()) return 1; if (!runJava()) return 2; return 0; }
bool JavaBinderyImpl::showConsole() { if (!loadJVM()) return false; std::vector<Value> params; Value retval; callInstance(Value::BIND_VOID, gatewayObj, "showConsole", "()Z", params, retval); return retval.getBoolean(); }
bool JavaBinderyImpl::scriptRunFile(const String &lang, const String &fname) { if (!loadJVM()) return false; std::vector<Value> params; Value langParm(lang); params.push_back(langParm); Value fnameParm(fname); params.push_back(fnameParm); Value retval; callInstance(Value::BIND_VOID, gatewayObj, "scriptRunFile", "(Ljava/lang/String;Ljava/lang/String;)Z", params, retval); return retval.getBoolean(); }
JNIEnv* JRE::createJVM(bool debug) { int noptions = 7 + (debug ? 1 : 0); options_ = new JavaVMOption[noptions]; //C:\\Program Files (x86)\\Java\\jre6\\lib\\rt.jar //std::string classpath = "-Djava.class.path=D:\\workspace\\dispdrivertest\\bin;" + mol::tostring(classpath_); //std::string libpath = "-Djava.library.path=D:\\workspace\\dispdrivertest\\bin" + mol::tostring(libpath_); mol::win::AppBase& app = mol::App(); //JREApp& app = mol::app<JREApp>(); std::wstring path = app.getAppPath(); path = mol::Path::pathname(path); path = path + _T("\\lib"); std::string classpath = "-Djava.class.path=" + mol::tostring(path) + "\\classes;" + mol::tostring(path) + "\\dispdriver.jar"; if ( !classpath_.empty() ) { classpath += ";" + mol::tostring(classpath_); } std::string libpath = "-Djava.library.path=" + mol::tostring(path) ; if ( !libpath_.empty() ) { libpath += ";" + mol::tostring(libpath_); } options_[0].optionString = (char*)classpath.c_str(); options_[1].optionString = (char*)libpath.c_str(); options_[2].optionString = "-Xdebug"; options_[3].optionString = "-Xnoagent"; options_[4].optionString = "-Djava.compiler=NONE"; options_[5].optionString = "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"; options_[6].optionString = "-Dsun.java2d.d3d=false"; if ( debug ) options_[7].optionString = "-verbose:jni"; vm_args_.version = JNI_VERSION_1_6; vm_args_.nOptions = noptions; vm_args_.options = options_; vm_args_.ignoreUnrecognized = false; if (!jruntime_) jruntime_ = loadJVM(); if (!jruntime_) { cry(); return 0; } CreateJavaVM createJavaVM = (CreateJavaVM) ::GetProcAddress( jruntime_, "JNI_CreateJavaVM" ); if (!createJavaVM) return false; jint res = createJavaVM( &jvm_, (void**)&env_, &vm_args_ ); if( res != 0 ) return 0; jvm_->AttachCurrentThread((void**)&env_, &vm_args_); return env_; }