java - classLoader 无法加载实现此模块之外的类的类

标签 java classloader maven-plugin multi-module

我正在尝试使用下面的类加载器在我的 Maven 插件中加载特定的类:

 public ClassLoader getClassLoader(MavenProject project) {
    try
    {
        List classpathElements = project.getCompileClasspathElements();
        URL urls[] = new URL[classpathElements.size()];
        for ( int i = 0; i < classpathElements.size(); ++i ) {
            urls[i] = new File( (String) classpathElements.get( i ) ).toURL();
        }
        return new URLClassLoader( urls, this.getClass().getClassLoader() );
    } catch ( Exception e ) {
        System.out.println( "Couldn't get the classloader." );
        return this.getClass().getClassLoader();
    }
}

这个加载器在一个简单的测试项目中工作得很好。但是当我在多模块项目中使用它时,它不会加载特定的类。在另一个模块中实现类的类(例如,CardlessFacadeBean 实现 CardlessFacade,CardlessFacadeBean 类在此模块中,CardlessFacade 类在另一个模块中)。但其他不具备此条件的类可以正常加载。有什么方法可以简单地解决这个问题吗?非常感谢

最佳答案

我只是将另一个模块类路径添加到类路径元素列表中,如下所示,它识别了提到的类。

classpathElements.add(moduleDirectory);

任何其他解决方案将不胜感激。

关于java - classLoader 无法加载实现此模块之外的类的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58712804/

相关文章:

java - Web 服务器在 Android 中不工作

java - 网络启动应用程序 : SecurityException: setContextClassLoader

maven - 无法构建 Maven 项目

java - 不明白为什么我不能将数据追加到 ArrayList 的末尾?

java - 字母频率数组,将int转换为char

java - 奇怪的 Java 导入

java - 追踪奇怪的类转换异常

java - 自定义类加载失败,出现 java.lang.IllegalAccessError : Class ref in pre-verified class resolved to unexpected implementation

maven-plugin - apt maven 插件无法生成 Q 类

java - Maven改变不同配置文件的插件顺序