红帽JBoss开发者工作室 版本:10.2.0.GA 构建ID:GA-v20161125-1418-B55 建设日期:20161125-1418
我有一个maven EAR项目,其中包含以下项目:
战 EJB-JAR ejb-client(本地接口)
如果我从命令行在父项目上运行mvn clean install
,我可以将生成的ear文件部署到jboss eap7,没有任何问题。但是,如果我从IDE执行clean / build all,然后选择run-as on server,我会收到以下错误:
Caused by: java.lang.IllegalStateException: WFLYEE0042: Failed to
construct component instance
Caused by: java.lang.IllegalArgumentException: Can not set
com.hsntech.hif.eao.OperationsCache field
com.hsntech.hif.application.HIFManagement.opCache to
com.hsntech.hif.eao.OperationsCache$$$view8"}}
ejb-client jar项目包含接口:
@Local
public interface OperationsCache {
Map<String, OperationMapping> getOperationsMaps() throws HIFEJBException;
void resetCache();
}
和ejb.jar的inslemtation包含:
@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
public class OperationsCacheImpl implements OperationsCache, Observer {
EJB正在此类的war项目中创建:
@Singleton
@Startup
public class HIFManagement implements HIFManagementMBean {
@EJB
private OperationsCache opCache;
答案 0 :(得分:0)
我的钱用于上课加载问题。让Eclipse构建并打包您的应用程序并不完全不受错误的影响。 IDE将保留自己的构建指令,如何将应用程序组装成可部署的.ear工件。您可以调整项目设置/ Web装配中的设置。我想如果你将Eclipse内置的耳朵与maven构建的耳朵进行比较,那么模块或库中包含的类就会有所不同。
如果您正在使用maven ejb插件,要从ejb-client模块中过滤掉实现类,那么我认为没有办法在Eclipse中使用相同的东西。话虽如此,我认为你实际上并不需要为ejb-client提供单独的模块。耳内的War模块可以访问父耳模块的jar超级模块中包含的所有类。因此,只需将ejb-jar添加为范围为provided
的war模块的依赖项。
答案 1 :(得分:0)
我将为您解决所有可能出现的问题: 1.在父pom处安排模块的顺序:
<modules>
<module>core-module</module>
<module>depends-on-core</module>
<module>depends-on-core2</module>
<module>depends-on-depends-on-core</module>
</modules>
mvn eclipse:clean
不要担心Developer Studio是基于eclipse的,所以没问题。 mvn eclipse:eclipse
在服务器上运行
答案 2 :(得分:0)
一般建议:无论如何都不要从Eclipse做到这一点,因为类加载等而容易出现随机错误...
但这里有一些可能的提示:
检查您是否从控制台和Eclipse使用相同的Maven运行时。一些Eclipse发行版带有一个奇怪的内置版本
检查Eclipse是否设置为忽略某些Maven插件
检查JBoss-Deployment是否通过控制台运行。有一个插件。如果你可以开始工作,你可以使用Eclipse中的,而不是内置功能。</ p>