Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止从jar加载类_Java_Jar_Classpath_Classloader_Contextclassloader - Fatal编程技术网

Java 如何防止从jar加载类

Java 如何防止从jar加载类,java,jar,classpath,classloader,contextclassloader,Java,Jar,Classpath,Classloader,Contextclassloader,我正在为一些应用程序编写插件。让我们假设应用程序对libA-1.0的库依赖性和我的插件对libA-2.0的依赖性相似。版本不同,彼此不兼容(即,它们具有不同的api方法签名) 如何防止我的插件从libA-1.0加载类(或者如何强制它使用libA.2.0中的类) 有没有办法做到这一点,不编写自定义类加载器,不使用forName、loadClassDefinition调用 当您将一些库放在*.war归档文件中,但由于web Container在类路径上具有“相同”的库,因此它们不会加载时,也会出现类

我正在为一些应用程序编写插件。让我们假设应用程序对libA-1.0的库依赖性和我的插件对libA-2.0的依赖性相似。版本不同,彼此不兼容(即,它们具有不同的api方法签名)

如何防止我的插件从libA-1.0加载类(或者如何强制它使用libA.2.0中的类)

有没有办法做到这一点,不编写自定义类加载器,不使用forName、loadClassDefinition调用

当您将一些库放在*.war归档文件中,但由于web Container在类路径上具有“相同”的库,因此它们不会加载时,也会出现类似的问题

塔克斯需要任何帮助

问候,, Paweł

提供了这种开箱即用的功能。我确信还有其他一些插件框架提供类似的功能


有一个jar,它应该能够提供从不同jar加载类的许多功能。您必须付出一些努力来更改正在执行该工作的线程的类加载器。手头没有示例,如果您需要一个具体的示例(除非您可以通过搜索引擎找到示例)

我很想知道没有类加载器是否可以实现这一点,但我建议没有。何时以及如何更改类加载器。假设我的插件在MyPlugin类中有entryPoint()方法,并且这个方法由我前面提到的应用程序调用。当运行时开始执行方法entryPoint()时,类MyPlugin只是由某个类加载器执行。如果我将Thread.getCurrentThread().setContextClassloader()中的类加载器更改为我的自定义UrlClassLoader,这会起作用吗?为什么不呢?欢迎解释:)