CompusaMedlem sedan jan. 20023 327 inlägg Har en Jsp fil och en servlet som jag gjort med hjälp av min nya bok, tyvärr verkar det inte fungera och jag vet inte hur jag ska lyckas. Är ny inom webbutveckling JSP och har märkt att det är en del trixande, snälla hjälp mig komma vidare :) Hade samma variant av denna mycket enkla applikation tidigare men då var allt i en JSP-fil och då fungerade det.
Felmeddelandet när jag ska testa sidan:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP
Generated servlet error:
jspbook.util.JspSuper cannot be resolved or is not a valid superclass
Generated servlet error:
The method getPageContext(Servlet, ServletRequest, ServletResponse, String, boolean, int, boolean) in the type JspFactory is not applicable for the arguments (customers_jsp, HttpServletRequest, HttpServletResponse, String, boolean, int, boolean)
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:397)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:288)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:296)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Jag har bifogat min filer customer.jsp och JspSuper.java
customer.jsp ligger i katalogen:
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\jspBook\ch01
JspSuper.java ligger i katalogen:
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\WEB-INF\classes\jspbook\util
TomasJMedlem sedan feb. 200563 inlägg Re: Hjälp! "Unable to compile class for JSP"
Compusa skrev:
Generated servlet error:
jspbook.util.JspSuper cannot be resolved or is not a valid superclass
...
JspSuper.java ligger i katalogen:
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\WEB-INF\classes\jspbook\util
Lägg in JspSuper.class dit istället för JspSuper.java
/ Tomas
CompusaMedlem sedan jan. 20023 327 inlägg Nej det hjälpte inte, jag får fortfarande samma fel, men tack för svaret. Ibland när jag trycker på reload visas den gamla sidan, den som fungerade, dvs som bara bestod av jsp fil.
CompusaMedlem sedan jan. 20023 327 inlägg När jag försöker komplimera classen i exempelvis netbeans så känner inte komplimatorn igen:
import javax.servlet.ServletConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
Kan detta ha med saken att göra?
jmeMedlem sedan maj 20012 237 inlägg Har du inkluderat j2ee.jar i ditt projekt?
Om jag minns rätt så ingår bl a javax.servlet.* i j2ee.jar
Jag har använt mig av den som medföljde Tomcat 4 och 5.
Med version 5 så heter .jar-filen annorlunda, typ servlet-api.jar
Har du skrivit package jspbook.util i klassen JspSuper?
hmm, har aldrig sett detta:
<%@ page extends="jspbook.util.JspSuper" %>
pröva med:
<%@ page import="jspbook.util.JspSuper" %>
Jag kan givetvis ha fel. extends kan finnas men för att importera en klass/paket så kör man med @page import direktivet
CompusaMedlem sedan jan. 20023 327 inlägg Enligt boken:
To compile the class, make sure you have j2ee.jar, or servlet-api.jar and jsp-api.jar in your classpath. This class is placed in the normal directory hierarchy under web-inf\classes. In other words, you place it in your server's classpath
Jag fattar inte? Vad ska jag göra med jar-filerna? servlet klassen jag gjorde för att testa skrev jag i en editor och sparade som .java, jag antar att jag inte får en .class fil förrän jag har lyckats komplimera?
jme skrev:
Har du skrivit package jspbook.util i klassen JspSuper?
Japp det har jag gjort, men vilket program är lättast att skriva servlets i? I netbeans får jag bara massa felmeddelanden, jag gjorde min i en enklare editor
jme skrev:
<%@ page extends="jspbook.util.JspSuper" %>
pröva med:
<%@ page import="jspbook.util.JspSuper" %>
Testade det du skrev men det hjälpte inte heller. Enligt boken ska det fungera med extends, dvs att JSP-sidan ärver från min servlet.
jmeMedlem sedan maj 20012 237 inlägg Jo, såg att extends verkligen finns: googlade lite :)
Filerna j2ee.jar och jsp-api.jar behövs. De ligger väl i TOMCAT_ROOT/common/lib?
Kör du med en vanlig texteditor som t ex UltraEdit och TextPad så måste du ange sökvägen till dessa klasser. Detta gör du genomatt ange sökvägen i CLASSPATH.
Kör du med NetBeans så kan du säkert ange sökvägen genom programmet. Kör själv med Eclipse så jag kan inte säga rakt av.
lägg till c:\TOMCAT_PATH\common\lib\j2ee.jar och c:\TOMCAT_PATH\common\lib\jsp-api.jar i CLASSPATH
Kontrollera om du måste använda j2ee.jar eller servlet-api.jar.
Med andra ord, kolla vilken av dem du har i /common/lib. :)
Ok, du använder tydligen Tomcat 5.5.
CompusaMedlem sedan jan. 20023 327 inlägg I mitt första inlägg ligger mina filer, skulle du vilja testa? 2 stycken filer totalt. Tack för ditt engagemang, hoppas jag får det att fungera, känns tungt just nu.
edit
Så här ser min classpath ut (enviroment variables\system variables\):
C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib
jmeMedlem sedan maj 20012 237 inlägg Jadå, kan testa dem. Ska se vad som händer...
CompusaMedlem sedan jan. 20023 327 inlägg
jme skrev:
Jadå, kan testa dem. Ska se vad som händer...
Grymt bussigt :birp Googlar lite, kanske någon annans som haft ett liknande fel.
Hur fungerar det här med .class filen, jag har ju ingen, brukar skapas per automatik när jag kör i exempelvis netbeans. Nu har jag gjort den i JEdit, har bara .java, ska det kunna fungera ändå?
Jag kopierade visserligen filerna från bokens hemsida för att testa och där fanns .class filen men det spelade ingen roll, samma fel ändå dvs.
jmeMedlem sedan maj 20012 237 inlägg Du, det verkar fungera då jag tar bort dessa två rader:
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@taglib prefix="sql" uri="http://java.sun.com/jstl/sql_rt" %>
Har jag dem kvar så klagar Eclipse:
JSP Parsing Error:The absolute uri: http://java.sun.com/jstl/core_rt cannot be resolved in either web.xml or the jar files deployed with this application
Hmm, nu får jag samma fel på andra filer som fungerat bra innan.
CompusaMedlem sedan jan. 20023 327 inlägg Hmm, de där taggarna fungerade för mig innan, så det är något med servleten/apache konfiguration som jäklar sig. Tack för att du orkade testa :)
Lägger snart ner det här, ingen som vet hur jag ska kunna få det att fungera? :q :(
jmeMedlem sedan maj 20012 237 inlägg Nej du, jag har inte gett upp ännu ;)
Nu så strular min eclipse. Den klagar på nåt den itne borde.
CompusaMedlem sedan jan. 20023 327 inlägg
jme skrev:
Nej du, jag har inte gett upp ännu ;)
Nu så strular min eclipse. Den klagar på nåt den itne borde.
Ojdå :l
Nej då jag ger inte upp, är enveten som fanken, blir så less bara när man har sett fram mot att koda lite :)
jmeMedlem sedan maj 20012 237 inlägg Jag får inte samma fel som du längre.
Pröva att starta om Tomcat.
Får du samma fel igen?
Kontrollera att du har inkluderat sökvägarna till alla nödvändiga jar-filer i Netbeans.
jmeMedlem sedan maj 20012 237 inlägg
Så här ser min classpath ut (enviroment variables\system variables\):
C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib
Pröva med att inkludera kompletta sökvägen till servlet-api-jar och jsp-api.jar i CLASSPATH. Jag har för mig att jag har haft problem då jag inte kört med kompletta sökvägar.
Jag vet faktiskt inte varför.
Jag har själv .; i början av CLASSPATH. Det berättar för kompileraren att den skall leta efter klasser i current working directory.
Sedan har jag också C:\j2sdk1.4.2_06\lib i CLASSPATH.
CompusaMedlem sedan jan. 20023 327 inlägg
jme skrev:
Jag får inte samma fel som du längre.
Pröva att starta om Tomcat.
Får du samma fel igen?
Kontrollera att du har inkluderat sökvägarna till alla nödvändiga jar-filer i Netbeans.
Hmm, helst kör jag det inte netbeans, för den vill inte riktigt göra som jag, går det att göra samma JEdit? När jag komplimerar JspSuper.java där får jag fel i stil med:
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\jspBook\WEB-INF\classes\jspbook\util\JspSuper.java:3: package javax.servlet does not exist
import javax.servlet.ServletConfig;
Måste .java filerna kompileras innan de används?
jmeMedlem sedan maj 20012 237 inlägg Java-filerna måste kompileras innan de kan köras.
När du kompilerar en Java-fil så bildas det en .class fil.
Det är denna som sedan kan köras.
Att du får:
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\jspBook\WEB-INF\classes\jspbook\util\JspSuper.java:3: package javax.servlet does not exist
import javax.servlet.ServletConfig;
låter som att du inte har inkluderat sökvägen till servlet-api.jar.
Du MÅSTE göra detta.
Kör du med JEdit så måste du göra som jag skrev.
Lägg till
C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\servlet-api.jar
och
C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\jsp-api.jar
(Kontrollera att du har dessa filer i common/lib
i din CLASSPATH
Separera båda med ett ';' tecken.
Lägg även till '.;' före allt i din CLASSPATH
Ovanstående exempel utan '' tecken ;)
När du har gjort detta så pröva att kompilera om JspSuper.java
Fungerar det fortfarande inte så starta om JEdit. Kan vara så att JEdit inte märker ändringen på CLASSPATH
Fungerar det inte efter detta så kopiera hela din CLASSPATH och visa den här.
CompusaMedlem sedan jan. 20023 327 inlägg jme stort tack för ditt engagemang, med hjälp av lite hints lyckades jag få det att fungera! Hurdå?
Jag importerade min befintliga katalogstruktur som jag skapat i utforskaren till netbeanas. Skapade ett nytt projekt och en web.xml, kopierade in nödvändiga .jar filer för JSTL-taggar, tryckte på lite knappar, build och allt vad det var och nu fungerar det :)
jmeMedlem sedan maj 20012 237 inlägg Mycket roligt att höra :)