2017-02-09 2 views
2

Red Hat JBoss Developer Studio Version: 10.2.0.GA Build-ID: GA-v20161125-1418-B55 Herstellungsdatum: 20161125-1418Ohr von IDE eingesetzt ausfällt, aber installieren von Maven Build arbeitet

ich habe ein maven-EAR-Projekt mit separaten Projekten für:

Krieg ejb-jar ejb-Client (lokale Schnittstellen)

Wenn ich ein mvn clean install auf dem übergeordnete Projekt von der Befehlszeile ausführen, kann ich implementieren die erzeugtes Ohr Datei zu jboss eap7 ohne Probleme. Allerdings, wenn ich ein sauberen/bauen alle aus der IDE ausführen, und wählen Sie dann Ausführen als auf dem Server, bekomme ich folgende Fehlermeldung:

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"}} 

das ejb-Client jar-Projekt enthält die Schnittstelle:

@Local 
public interface OperationsCache { 

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

    void resetCache(); 
} 

und die ejb.jar impelemtation enthält:

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

die EJB im Krieg Projekt in dieser Klasse wird erstellt:

@Singleton 
@Startup 
public class HIFManagement implements HIFManagementMBean { 

@EJB 
private OperationsCache opCache; 
+0

Die Injektion scheint in einer Klasse com.hsntech.hif.application.HIFManagement fehlschlagen. Zeigen Sie diesen Code auch bitte. – Gimby

Antwort

0

Mein Geld geht zum Laden der Klasse. Mit Eclipse bauen und verpacken Sie Ihre App ist nicht gerade immun gegen Fehler. Die IDE behält ihre eigenen Build-Anweisungen bei, wie man Ihre App zu einem deploybaren .ear-Artefakt zusammenbaut. Sie können mit den Einstellungen in den Projekteinstellungen/Web Assembly herumspielen. Ich schätze, dass wenn man das Eclipse-gebaute Ohr mit dem von Maven gebauten vergleicht, wird es Unterschiede in den Klassen geben, die in Modulen oder Bibliotheken enthalten sind.
Wenn Sie maven ejb plugin verwenden, um Implementierungsklassen aus dem ejb-client-Modul herauszufiltern, dann glaube ich nicht, dass es eine Möglichkeit gibt, das gleiche in Eclipse zu verwenden. Davon abgesehen glaube ich nicht, dass Sie tatsächlich ein separates Modul für ejb-client benötigen. Kriegsmodul innerhalb des Gehörs hat Zugriff auf alle Klassen, die in jar-Supermodulen des Eltern-Ohr-Moduls enthalten sind. Fügen Sie einfach ejb-jar als Abhängigkeit zu Ihrem Warmodul mit dem Bereich provided hinzu.

0

Ich werde gehen Sie für alle möglichen Probleme, eine Heilung geben: 1. Ordnen Reihenfolge der Module an Eltern 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 Entwickler keine Sorge Studio basiert auf Eclipse, also wird es kein Problem sein.
  2. mvn eclipse:eclipse

  3. Run auf Server

0

Allgemeine Hinweise: Tun Sie es nicht von Eclipse-wie auch immer, es ist anfällig für zufällige Fehler aufgrund Classloading, etc ...

Aber Hier sind einige mögliche Tipps:

  • Überprüfen Sie, ob Sie das gleiche verwenden Maven-Laufzeit von Konsole und Eclipse.Einige Eclipse-Distributionen Schiff mit einem seltsamen build-in-Version

  • überprüfen, ob Eclipse setzen einige Maven Plugins ignorieren

  • prüft, ob die JBoss-Deployment via Konsole arbeitet. Es gibt ein Plugin. Wenn Sie zur Arbeit kommen können, könnten Sie das aus Eclipse anstelle der integrierten Funktion verwenden.

Verwandte Themen