我正在使用一个使用EJB 2.1的旧企业应用程序。该应用程序使用Eclipse和XDoclet 1.2.3在2000年代构建。
该应用程序包含1个名为AppEar
的企业应用程序项目,1个名为AppEjb
的EJB项目,1个名为AppEjbClient
的EJB客户端项目,1个名为AppSrc
的实用程序项目和1名为AppWeb
的动态Web项目。
ejb-jar.xml
位于ejbModule\META-INF
项目的AppEjb
文件夹中,并通过此条目指向AppEjbClient
项目:
<ejb-client-jar>AppEjbClient.jar</ejb-client-jar>
我将应用程序升级到Eclipse Kepler(我的工作区为D:\WORK\WORKSPACE-eclipse-jee-kepler
)。但我遇到的问题是XDoclet插件现在在ejb-jar.xml中设置了错误的ejb-client-jar。这就是它现在的设置方式:
<ejb-client-jar>AppSrc.jar</ejb-client-jar>
所以不知何故,XDcolet插件现在认为AppSrc
是EJB客户端项目而不是AppEjbClient
。
我调查了一下,发现XDcolet插件运行了位于工作区的tempAnt.xml
文件夹中的ant脚本.metadata\.plugins\org.eclipse.jst.j2ee.ejb.annotations.xdoclet
。该文件夹还有一个build.properties
文件,该文件有2个与EJB客户端模块相关的属性:
ejb.dd.clientjar = AppSrc.jar
ejb.client.module.src = d:/ WORK / WORKSPACE-Eclipse的JEE-开普勒/ AppSrc / SRC
我认为我只需要在build.properties
文件中更改它们以指向正确的EJB客户端,以便我这样更改它们:
ejb.dd.clientjar = AppEjbClient.jar
ejb.client.module.src = d:/ WORK / WORKSPACE-Eclipse的JEE-开普勒/ AppEjbClient / ejbModule中
保存build.properties
文件,然后再次清理并构建整个工作区。
但是在ejb-jar.xml中仍然遇到了同样错误的ejb-client-jar。
检查build.properties
文件夹中的.metadata\.plugins\org.eclipse.jst.j2ee.ejb.annotations.xdoclet
文件,并通过删除我的更改将其恢复。所以XDoclet插件会覆盖这个文件。
如何修复此问题,以便在ejb-jar.xml中选择正确的ejb-client-jar?
答案 0 :(得分:0)
我们最近遇到了同样的问题。解决这个问题的方法是从Eclipse工作区中删除Utility Project,因为无论如何都通过maven poms解决了dependecies。
之后,Java EE Tools > Remove EJB Client
下的客户端(以及 ejb.dd.clientjar 中的客户端)设置正确。
可能是一些与此https://bugs.eclipse.org/bugs/show_bug.cgi?id=122274类似的错误。