java EE 6 multi-module ear deply CDI NoClassDefFoundError

0

Stworzyłem aplikacje pakowaną w archiwum ear składającą się z 3 modułów face.web, logic-ejb.jar i persistance.jar ostatni z nich zawiera PU i DAO(klasy i interfejsy), chciał teraz wstrzyknąć do modułu logic-ejb i face owe DAO, stworzyłem więc stosowne pliki beans.xml(puste bo nie korzystam z niczego specjalnego) i utworzyłem punkty wstrzykiwana przy pomocy adnotacji @Inject w omawianych modułach. Podczas deplya jednak uzyskuję:

java.lang.NoClassDefFoundError

Ktoś spotkał się z podobnym problemem przy wstrzykiwaniu klas z innego modułu (w obrębie jednego modu wszystko dział ok) Może pominąłem jakiś ważny krok podczas próby wstrzyknięcia DAO, byłem przekonany że wystarczy adnotacja i plik beans.xml, ale wygląda na to że classLoader wymaga dodatkowej troski, niestety nie wiem jak mam do tego teraz podejść ;/

0

Opisz jeszcze strukture tego EARa - co masz w / tego pliku, co masz w /lib. Dodatkowo, nie napisales jasno czy persistence.jar ma beans.xml.

0

Stawiał bym na moją nieznajomość maven-a jeśli chodzi o wyżej opisany problem z CDI, to właściwie pierwszy raz gdy go używam, więc bardzo możliwe że pominąłem coś istotnego w plikach pom.

Oto pliki pom projektu, tylko ładnie prosił bym się nie śmiać - pierwszy raz używam mavena^^" i jeszcze nie do końca ogarniam jego koncepcje

root pom
ear pom
jar pom
ejb pom
web pom

każdy z modułów ma beans.xml w META-INF, war w WEB-INF

0

Stworzyłem przed chwilką dwa proste projekty wielomodułowe jeden przy użyciu mavena drugi przy użyciu NB i jego generatora skryptów oba projekty wyglądają tak sam web moduł, dwa moduły EJB1 i EJB2 w jednym z modułów EJB1 tworzę puste ziarno coby się serwer nie złościł oraz interfejs Test z metodą write(); następnie w tym samym module tworzę zwykłą klasę TestImpl i implementuje interfejs Test. Drugim moduł EJB2 zawiera tylko singleton z adnotacją @Startup:

@Singleton
@LocalBean
@Startup
public class StartUpLoaderBean {
    
    @Inject
    Test t;

    @PostConstruct
    public void metoda(){
        t.write();
    }
}
 

Wersja stworzona bez użycia mavena działa, wpis logowany jest na konsole natomiast projekt gdzie użyłem mavena sypie błędem:
SEVERE: Class [ Lpl/zawi/mamba/persistence/controllers/Test; ] not found. Error while loading [ class pl.zawi.mamba.logic.startup.StartUpLoaderBean ]

Mogła by mi jakaś mądra głowa podpowiedzieć jak poustawiać te pom-y żeby to zaczęło działać :( ?

0

Napisz jak wyglada zbudowany EAR, co jest w glowym a co w lib. Jesli tam jest zle, to dojdziemy pewnie co i mavena sie poprawi pozniej.

0

Wygląda na to że maven źle generował plik application.xml, wydaje się że zmiana na nowszą wersje pluginu pomogła, przynajmniej ten mały testowy programik zaczął działać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1