webForumDet fria alternativet

java.lang.NoClassDefFoundError

Java

13 svar · 1 686 visningar · startad av arvjos

Medlem sedan juni 2002129 inlägg
Frågan#1

Hejsan

Jag har en helt fungerande webapp som använder STRUTS som körs på en resin server. Nu har webbhotellet fått för sig att de ska lägga ner Resin och istället köra tomcat 5.

Jag har då en exakt kopia av webappen som körs på resin och lägger denna i den mapp där tomcat vill ha sina webappar.

Många sidor funkar fint men sen på några sidor får jag följande fel:

java.lang.NoClassDefFoundError
	org.apache.jsp.produkter.prodlist_jsp._jspService(prodlist_jsp.java:533)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Jag får inga fel när jag kompilerar och klassen finns där den ska finnas. Jag har testat att ta bort just den och då får jag andra fel. Jag vet vilken klass det är som han inte hittar för jag kommenterar bort den raden i jsp filen och då funkar allt.

Är det någon som vet vad det kan vara för fel. Måste ju vara nån skillnad mellan resin och tomcat lr? Tror även att de uppgraderat från Java 1.3 till 1.4.

Tack

Medlem sedan juni 20008 205 inlägg
#2

Kan väl vara att Struts inte ligger i classpathen, eller nåt. Svårt att säga när man inte vet vilken klass det är som saknas...

Medlem sedan juni 2002129 inlägg
#3

Det är en av mina egna klasser som han inte hittar. Alltså inte någon i Struts. Var sätter jag classpathen till struts då?

Medlem sedan juni 20008 205 inlägg
#4

Förutsatt att alla class-filer ligger i WEB-INF/classes (+ paketstruktur) ska det funka.

Medlem sedan juni 2002129 inlägg
#5

det är ju precis det de gör. Fattar inte vad det är för problem.

Medlem sedan maj 20012 237 inlägg
#6

Kan du posta lite kod ur prodlist.jsp, eftersom det verkar vara där som problemet hittas.

org.apache.jsp.produkter.prodlist_jsp._jspService(prodlist_jsp.java:533)

Observera, atta rad 533 inte behöver vara samma rad som i filen prodlist.jsp, utan du ska titta på filen prodlist.jsp.java som finns oftast i katalogen WORK/...

Medlem sedan juni 2002129 inlägg
#7

Det funkar när jag tar bort denna rad. Alltså är det den som ställer till det.

prodList = ProductCollection.getAllProducts();

Medlem sedan maj 20012 237 inlägg
#8

Troligtvis ProductCollection som inte hittas.

Kolla så at du har den klassen i classes/WEB-INF/ samt att den har korrekt paket-struktur.

Medlem sedan juni 2002129 inlägg
#9

När jag försöker starta om appen får jag följande fel i loggen. javax.servlet.jar finns i lib.

Jan 31, 2005 2:08:55 PM org.apache.catalina.core.StandardHostDeployer
stop
INFO: standardHost.stop /v2
Jan 31, 2005 2:08:57 PM org.apache.catalina.core.StandardHostDeployer
start
INFO: standardHost.start /v2
Jan 31, 2005 2:08:57 PM org.apache.catalina.loader.WebappClassLoader
validateJarFile
INFO:
validateJarFile(/home/userC/c0017000/public_html/faxma.com/tomcat5-webapps/v2/WEB-INF/lib/javax.servlet.jar)
- jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class:
javax/servlet/Servlet.class

Medlem sedan maj 20012 237 inlägg
#10

hmm...

Filen heter javax.servlet.jar?

Låter lite mysko.

Ska inte filen bara heta server.xml?

Medlem sedan juni 2002129 inlägg
#11

server.xml? en lib fil kan väl inte vara i xml format. Möjligtvis server.jar eller servlet.jar kanske...

Medlem sedan juni 20008 205 inlägg
#12

servlet.jar behöver inte ligga i lib-katalogen, det är det som ger upphov till varningen ("jar not loaded" etc.) - den finns redan laddad av Tomcat. Jag tror inte att det här bör ha något med det andra problemet att göra, men det kan kanske finnas något samband.

Medlem sedan maj 20012 237 inlägg
#13

jag menade servlet.jar.... :|

Medlem sedan juni 2003372 inlägg
#14

Om du inte fått rätt på det kan Suns AVK va värt ett försök. Där kan du kolla om din applikation använder appserver-specifika grejer eller om den håller sig till standard J2EE.
http://java.sun.com/j2ee/avk/

257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)