在maven项目中将java文件从一个模块导入另一个模块正在抛出classNotFoundException

时间:2018-01-12 17:13:52

标签: spring maven maven-assembly-plugin

我正在尝试在多个模块中创建一个Spring maven项目。假设有以下模块的Maven项目:

模块根(所有子模块的父模块) 模块持久性(具有DAO操作和包类型jar的代码逻辑) 模块服务(具有控制器实现和包类型战争的代码逻辑)

现在将spring.xml文件从一个模块导入到另一个模块工作正常但是在这里我在部署战争时遇到错误,HibernateCfg.java是在模块模块持久性中定义的文件,并在模块中导入此文件 - 服务。

所有模块的编译和构建都是成功的,但是在部署模块服务war文件时 服务器,它正在为“HibernateCfg”抛出ClassNotFoundException

我检查了war文件,在Module-persistance.jar文件里面有HibernateCfg的类文件,但是我不知道它为什么会抛出异常。

任何人都可以帮我解决以下异常:

 Caused by: java.lang.ClassNotFoundException: org.munsiji.hibernateUtil.HibernateCfg from [Module "deployment.munsiji-service.war:main" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93)
    ... 48 more

1 个答案:

答案 0 :(得分:1)

我最近解决了此问题,因此也想在此更新。问题背后的原因是,Maven Module-service的Maven工件类型是Web,而Module-persistance也是Web Maven工件类型。因此,当我尝试从Eclipse本身在Wildfly服务器中进行完全发布时,由于Module-persistance中的web.xml,文件夹结构是错误的,因为Eclipse将Module-persistance视为Web模块并因此创建了文件夹结构。

但是,如果我将在Module-service war文件中手动复制Module-persistance jar文件并运行wildfly服务器,则没有错误,因为jar的文件夹结构可以根据需要很好地工作。但这是解决方法。

问题的实际解决方案:我做了什么,我将Module-persistance的maven工件类型从“ maven web”工件类型更改为“ maven quickstart”。现在,即使我可以从Eclipse本身进行部署,它也可以正常工作。希望有道理。 :)