2017-02-09 16 views
2

紅帽的JBoss Developer Studio中 版本:10.2.0.GA 版本ID:GA-v20161125-1418-B55 構建日期:20161125-1418耳從IDE部署失敗,但是從Maven構建安裝工程

我有一個單獨項目的行家EAR項目:

戰爭 EJB-JAR EJB客戶端(本地接口)

如果我運行命令行父項目mvn clean install,我可以部署生成的耳朵文件到jboss eap7沒有問題。但是,如果我執行乾淨/從IDE建立所有,然後選擇運行的服務器上,我得到以下錯誤:

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客戶端JAR項目包含接口:

@Local 
public interface OperationsCache { 

    Map<String, OperationMapping> getOperationsMaps() throws HIFEJBException; 

    void resetCache(); 
} 

和ejb.jar impelemtation包含:

@Singleton 
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER) 
public class OperationsCacheImpl implements OperationsCache, Observer { 

的EJB是在戰爭中的項目被創建在這個類:

@Singleton 
@Startup 
public class HIFManagement implements HIFManagementMBean { 

@EJB 
private OperationsCache opCache; 
+0

注入似乎在類com.hsntech.hif.application.HIFManagement中失敗。請顯示該代碼。 – Gimby

回答

0

我的錢去上課問題。讓Eclipse構建和打包應用程序並不是完全不受錯誤的影響。 IDE將保留其自己的構建說明,以及如何將您的應用程序組裝成可部署的.ear工件。您可以使用項目設置/ Web組合中的設置。我想,如果你將構建的Eclipse與Eclipse構建的耳朵比較,模塊或庫中包含的類將會有所不同。
如果您使用的是maven ejb插件,要從ejb-client模塊中過濾掉實現類,那麼我認爲沒有辦法在Eclipse中獲得相同的工作。這就是說,我不認爲你實際上需要一個單獨的ejb-client模塊。耳內的戰爭模塊將有權訪問父耳模塊的罐子超模塊中包含的所有類。因此,只需將您的ejb-jar作爲依賴添加到範圍爲provided的戰爭模塊。

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不用擔心開發商Studio是基於Eclipse的,所以它不會有問題。
  • mvn eclipse:eclipse

  • 在服務器上運行

  • 0

    一般的建議:不要在Eclipse反正做到這一點,這是容易出現由於類加載等隨機誤差...

    但這裏有一些可能的提示:

    • 檢查您是否使用相同從控制檯和Eclipse Maven運行時。有些發行版的Eclipse附帶一個奇怪的內置的版本

    • 檢查,如果Eclipse中設置爲忽略某些Maven插件

    • 檢查,如果JBoss的部署通過控制檯的工作。有一個插件。如果您可以開始工作,那麼您可以使用Eclipse中的工具,而不是內置功能。