2016-04-21 75 views
-1

我在另一个行家项目乙加入行家项目A作为依赖性,然后通过反射访问由乙创建的罐子在另一个项目添加一个行家项目作为相关性,但其在投掷NoClassDefFound错误的类Maven项目一我在另一个行家项目

我的问题是,如何使项目类项目B的类路径中可见?我尝试添加MANIFEST.MF,但似乎只适用于jar和类文件。所有帮助赞赏。

回答

0

自然行家依赖由四元组(四对事物的集合)中规定:GroupIDArtifactIDversion,而经常被遗忘scope。前三个统称为GAV的依赖关系。 scope确定在运行时如何利用依赖关系。

在你的情况,似乎是发生的是以下几点:

  1. 项目A编译和安装在本地的回购协议(例如,使用mvn install命令)。
  2. 在项目B的pom.xml中,您将项目A的GAV指定为正确的<dependecy>声明,并且编译和打包似乎已经过了。
  3. 但由于项目B的最终JAR不具有项目A的等级,运行项目B,因为A的类没有发现失败。

基本上,你需要告诉Maven的依赖关系的范围。就你而言,由于项目A的类在预定义运行时(例如Tomcat或GlassFish Web容器)上不可用,因此需要确保将它们与项目B的JAR文件捆绑在一起。

这是您需要一个插件连接到构建生命周期的阶段。

见的maven-JAR-插件或Maven遮阳帘插件就如何使项目A的类项目B的最终JAR文件的一部分细节。

这是假设你是为运行中的类B:java -jar projectB-full.jar