从IDE部署的ear失败,但是从maven build work安装

时间:2017-02-09 14:35:23

标签: java java-ee jboss-eap-7 jboss-developer-studio

红帽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;

3 个答案:

答案 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>
  1. mvn eclipse:clean不要担心Developer Studio是基于eclipse的,所以没问题。
  2. mvn eclipse:eclipse

  3. 在服务器上运行

答案 2 :(得分:0)

一般建议:无论如何都不要从Eclipse做到这一点,因为类加载等而容易出现随机错误...

但这里有一些可能的提示:

  • 检查您是否从控制台和Eclipse使用相同的Maven运行时。一些Eclipse发行版带有一个奇怪的内置版本

  • 检查Eclipse是否设置为忽略某些Maven插件

  • 检查JBoss-Deployment是否通过控制台运行。有一个插件。如果你可以开始工作,你可以使用Eclipse中的,而不是内置功能。<​​/ p>