java.lang.NoClassDefFoundError: javax/ejb/CreateException

Status
Nicht offen für weitere Antworten.
Hey,

versuche grade ne j2ee zum Laufen zu bringen. Aufgabe ist, eine Anmeldemaske anzuzeigen, in der dann Emailadresse und ein Passwort eingegeben werden. Dazu habe ich eine j2ee Anwendungen geschrieben, die sich mit ner Datenbank verbindet und auch wunderbar funktioniert, wenn ich den Client aus einer "main Methode"

Da wir aber Masken verwenden sollen, wollte ich ein Dynamisches Web Project verwenden. Nach Einlesen von Name und Passwort ruft die "doGet" Methode die Folgende auf:
Code:
	public void testBean() {
		System.out.println("testBean()");
		try{
			j2ee.Gamble myBean = getHome().create(email, password);
			myBean.isUser();
			System.out.println("WORKS");
		}catch(RemoteException e){
			e.printStackTrace();
		}catch(NamingException e){
			e.printStackTrace();
		}catch(CreateException e){
			System.out.println("HERE");
		}
	}

Nachdem ich das JavaHomeObject gestartet habe und dann das Dynamic Web Project mittels Tomcat Server starte bekomme ich folgende Fehlermeldung (Controller ist die Klasse, die das Bean erzeugen soll)
Code:
INFO: Server startup in 891 ms
24.12.2006 01:02:40 org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet Controller as unavailable
24.12.2006 01:02:40 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Allocate exception for servlet Controller
java.lang.NoClassDefFoundError: javax/ejb/CreateException
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1055)
	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:757)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:130)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Unknown Source)

Wie gesagt, als normales Java Programm (was prinzipiell den gleichen Quelltext enthält) gestartet funktioniert alles!
Hat jemand einen Vorschlag? Wenn ich den Maus Cursor in der Klasse auf "CreateException" halte erscheint folgende Meldung:
Note: This element neither has attached source nor attached Javadoc and hence no information could be found.

Thanx4help
 
Ich habe jetzt die Web Anwendung auch über den JBoss Server laufen lassen. Neues Spiel, neue Fehlermeldung:

13:57:01,234 ERROR [LogInterceptor] EJBException in method: public abstract j2ee.Gamble j2ee.GambleHome.create(java.lang.String,java.lang.String) throws javax.ejb.CreateException,java.rmi.RemoteException:
javax.ejb.EJBException: Invalid invocation, check your deployment packaging, method=public abstract j2ee.Gamble j2ee.GambleHome.create(java.lang.String,java.lang.String) throws javax.ejb.CreateException,java.rmi.RemoteException...

Beim googeln stieß ich auf eine Antwort, die relativ klare Anweisungen enthält:
Hi folks,

I found this forum post while I was getting a similar error.

I had some EJBs in a Jar and some servlets that called the Jar in another War file which was deployed separately. In order to compile the War file I needed the interfaces of the EJBs (remote, remoteHome) in the War in a Jar libarary.

This setup works fine between 2 different JBoss instances but if you put the EJBs Jar file in the same instance as the calling Servlet War file then you get the same classes on the classpath.

This is what is causing this error. The EJB interfaces are on the classpath twice so if you are developing using the EJBs and the War file in the same container then you must remove the interfaces in the War file. This means the War file will use the interfaces from the EJB Jar instead.

Hope this helps,

Joe.
forum.java.sun.com/thread.jspa?threadID=557629&messageID=2738587



Anweisung: Lösche einfach die Klassen in dem Dynamic Web Project und importiere die EJB JAR File über den Java Build Path

*puhhh hat das Zeit gekostet 🙂
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben