我在另一个maven项目B中添加了一个maven项目A作为依赖项,然后通过反射访问另一个项目中由B创建的jar,但是它为maven项目A中的类抛出NoClassDefFound错误
我的问题是,如何在项目B的类路径中显示项目A中的类?我尝试添加一个MANIFEST.MF,但这似乎只适用于jar和类文件。所有帮助表示赞赏。
答案 0 :(得分:0)
maven依赖的性质由四元组(四件事的集合)指定:GroupID
,ArtifactID
,version
,以及经常被遗忘的scope
。前三个统称为依赖的GAV
。 scope
确定如何在运行时使用依赖项。
在您的情况下,似乎正在发生的事情是:
mvn install
命令)。<dependecy>
声明,并且编译和打包似乎已经完成。基本上,您需要告诉Maven依赖的范围。在您的情况下,由于项目A的类在预定义的运行时(例如Tomcat或GlassFish Web容器)不可用,您需要确保将它们与项目B的JAR文件捆绑在一起。
这是您需要一个插件附加到构建生命周期阶段的地方。
有关如何将项目A的类作为项目B的最终JAR文件的一部分的详细信息,请参阅maven-jar-plugin或maven-shade-plugin。
这假定您在B中运行的类为:java -jar projectB-full.jar
。