我有一个已经创建的JavaVM C对象,由我的库提供,但我需要在我的应用程序中添加更多jar和java文件。
我该怎么办?
该库使用JNI_CreateJavaVM(& jvm,(void **)& p_JNIEnv,& args);用于首次创建JavaVM的函数。我的应用程序需要添加更多选项。
有人请告诉我是否有任何函数可以动态地将java对象加载到已经创建的JavaVM对象。
答案 0 :(得分:0)
如果我理解你的问题......
Is there any function to dynamically add java objects to a running JVM?
然后使用以下命令将JAR动态添加到您的应用程序。 (根据需要添加错误检查和异常处理)
public synchronized void addJarToClassPath(final File jarFile) {
final String methodName = "addURL";
final Class<?>[] methodTypes = new Class[] { URL.class };
try {
final Method method = URLClassLoader.class.getDeclaredMethod(methodName, methodTypes);
method.setAccessible(true);
method.invoke((URLClassLoader) ClassLoader.getSystemClassLoader(), new Object[] { jarFile.toURI().toURL() });
} catch (final Exception e) {
throw new RuntimeException("Failed to load " + jarFile.getAbsolutePath(), e);
}
}