Я использую интерфейс JNI для вызова кода Java из кода C. При компиляции я использую следующую команду:Вызов кода Java из C
gcc -g -I/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/include/-I/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/include/linux/-L/usr/bin/java -L/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/Библиотека/amd64/сервер/-ljvm calljava.c
И я использую следующий код для создания виртуальной машины Java:
JNIEnv* create_vm()
{
JavaVM* jvm;
JNIEnv* env;
JavaVMInitArgs args;
JavaVMOption options[1];
args.version = JNI_VERSION_1_2;
args.nOptions = 1;
options[0].optionString = "-Djava.class.path=<classpath>";
args.options = options;
args.ignoreUnrecognized = JNI_FALSE;
JNI_CreateJavaVM(&jvm, (void **)&env, &args);
return env;
}
Мой вопрос: ли путь к JVM HARDCODED в двоичном? Можно ли указать путь к исполняемому файлу java во время выполнения? Если есть способ сделать это, кто-нибудь может мне помочь с флагами времени компиляции, которые могут быть использованы для этого?
Заранее благодарен!