如何将新的jar文件动态加载到JavaVM

时间:2014-10-09 01:57:06

标签: java java-native-interface

我有一个已经创建的JavaVM C对象,由我的库提供,但我需要在我的应用程序中添加更多jar和java文件。

我该怎么办?

该库使用JNI_CreateJavaVM(& jvm,(void **)& p_JNIEnv,& args);用于首次创建JavaVM的函数。我的应用程序需要添加更多选项。

有人请告诉我是否有任何函数可以动态地将java对象加载到已经创建的JavaVM对象。

1 个答案:

答案 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);
    }
}