1

我正在尝试在 Eclipse 中构建一个项目(实际上我使用的是 RAD,所以基本上是 eclipse,当我说“Java EE 项目”时,我的意思是“企业应用程序项目”)。

我的企业应用程序项目(“EAR”项目)有两个模块项目:-服务-网络

服务项目中有一些东西,都是使用 Spring 连接起来的。

Web 项目中有它自己的东西,全部使用 Spring 连接起来。web项目中的UI东西需要用到服务项目中的东西。

这两个项目都作为模块包含在 EAR 项目中。

Web 项目将“服务”项目列为构建路径中的依赖项目,已检查导出,并将其列为 EE 模块依赖项。

不过,我很难让这个工作:

Web 项目中的 spring 上下文当然是在部署应用程序时加载的内容,它从服务项目中导入我需要的 spring 配置。这似乎工作正常。

当 spring 尝试实例化一个 bean 时,它会抛出一个 ClassNotFoundException。在第一个豆子上。

我尝试简单地从我的服务上下文中复制 spring 配置并将其粘贴到我的 web 上下文中,但我得到了相同的 ClassNotFoundException。

我已经尝试在 web 项目的 java 控制器类中实例化该类型的对象(spring 说找不到的类),并且在编译时(无编译错误)和运行时(无异常)都是成功的.

因此,当 spring 尝试使用它们时,我的服务项目中的类在类路径中不可用。

任何想法这里发生了什么和/或我可以做些什么?

4

3 回答 3

0

我似乎已经解决了这个问题 - 我不确定问题到底出在哪里,但我的 spring 配置中一定有一个小错字。我决定从一个新的 spring 配置重新开始,当我开始构建新的备份时,一切正常。旧的肯定有问题。

不过感谢您的建议。

不幸的是,我们并不总是能够改变项目结构。我们正在研究其他人已经建立的结构。

我查看了 ParentClassFirst 与 ParentClassLast 设置 - 如果您未指定任何内容,似乎在 websphere 上 ParentClassFirst 设置是默认设置,因此我将其保留为没有指定以获得该功能。 http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/crun_classload.html

于 2011-05-04T11:43:01.297 回答
0

这是一个类加载器问题。

由于您使用的是 Spring,我假设您没有 EJB。如果是这种情况,为什么需要 EAR?在单个 WAR 中将整个事物部署为 Web 项目。

将所有 .class 和 Spring 配置 .xml 文件放在 WEB-INF/classes 中。使用 加载配置org.springframework.web.context.ContextLoaderListener

于 2011-05-03T12:41:22.470 回答
0

有一个类加载器策略,您应该使用 ParentClass First 。这将通过 Application.xml 或通过 web.xml 进行管理。你需要检查你的xml然后尝试。

于 2011-05-03T21:51:24.203 回答