投稿

6月, 2019の投稿を表示しています

C++からjavaを実行する方法。VisualStudio2010とjava8。

参考にさせていただいたサイト。 http://www.ne.jp/asahi/hishidama/home/tech/java/jni_vm.html https://blogs.yahoo.co.jp/dk521123/33067170.html 概要 諸事情あってC++からJavaを呼び出す際のコードです。 先述のサイト様の実装例といったところです。 環境 VisualStudio 2010 sp1 java 1.8 191 WindowsServer2008 sp1 以下コード *blog掲載に際し、一部でプロジェクト固有の文字が入っていたため、適当に削除しました。 **メソッドはblog用に一つにしてありますが、jvm使い回し箇所など適宜関数化すればよいかと思います。 #include #include "myApp.h" #include #include "jni.h" #pragma comment(lib, "jvm.lib") using namespace std; static JavaVM* vm(NULL); int cppExecute ( int id ) { // jvmの用意 JNIEnv *env; JavaVMInitArgs vm_args; JavaVMOption options[2]; options[0].optionString = "-Djava.class.path=xxx.jar"; options[1].optionString = "-Xmx256m"; //値はblog用に適当 vm_args.version = JNI_VERSION_1_8; vm_args.options = options; vm_args.nOptions = 2; // JVM使いまわしチェック。初回はJVMが未Createなのでそちらのルート。 // 2回目以降はCreate済みのJVMを使用する。 if (vm == NULL ) { // JVMが存在