Eigene Java-Klasse in JSP aufrufen

Galaxydriver

Grünschnabel
Hallo zusammen!

Ich habe in Java eine public Klasse (3 Klassenmethoden kein Konstruktor u. keine main-Methode) geschrieben.
Ich habe die class-Datei in Tomcat's webapps unter MeinTest/WEB-INF/classes gelegt.
Leider bekomme ich immer die Fehlermeldung, dass der Jaspar-Compiler die JSP-Datei nicht komilieren kann...
Ich habe in eine leere JSP-Datei mit der page-Direktive meine Klasse importiert und kann die Methoden (über Eclipse) direkt ansprechen. Aber im Browser erhalte ich den Compilerfehler (dass die tools.jar) fehlt.. Aber die ist vorhanden
In einem Java-Programm die Klasse problemlos...

Wie muss ich vorgehen, wenn ich auf die Methoden einer Java-Klasse in einer JSP zugreifen will?

cu
Chris
 
Interessant wäre, den gemeldeten Fehler zu sehen. Dann müßte man nicht von der "grünen Wiese" her irgendwas vorhersagen. :(

Prinzipiell gilt: JSPs besitzen die "_jspService(...)-Methode", in der die Java-Codes innerhalb von Scriptlets aufgerufen werden. Deklarationen werden in JSPs als Instanz-Variablen angelegt. Eine "main(...)-Methode" ist also nicht erforderlich.

Wenn Deine Klasse an sich aufgerufen wird und lediglich Dein "Tools"-Package nicht verwendbar ist, liegt das sicherlich daran, daß dieses "Tool"-Package höchstwarscheinlich ein JAR ist und unter "WEB-INF\jar" gehört.

Falls Deine Klasse nicht gefunden wird, müßte sie über den Page-Import-Tag importiert werden.

HTML:
<%@ page import="quatsch.mit.sose.*" %>
 
Ich habe ein ähnliches Problem. Ich habe einen Compiler geschrieben der einen String entgegennimmt diesen übersetzt und einen String zurück gibt. Ich habe dazu javacc benutzt. Ich habe die Klassen auf die ich zugreife in das org.apache.jsp.relasql verzeichnis kopiert und rufe in der JSP Seite, diese mit

RELASQL Kon = new RELASQL(new StringReader(SREL));
SSQL = Kon.RELASQL();

auf. Ich habe das package am Anfang der JSP Seite importiert mit:
import org.apache.jsp.relasql.*

Sobald ich den Abschicken Knopf drücke bei dem der String SREL gefüllt wird und an die obigen Zeilen übergeben wird, kommt folgende Fehlermeldung:
description The server encountered an internal error () that prevented it from fulfilling this request.



exception javax.servlet.ServletException: org/apache/jsp/realsql/REALSQL org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:822) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:755) org.apache.jsp.DB2Abfrage_jsp._jspService(DB2Abfrage_jsp.java:229) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:268) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:258) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:205) javax.servlet.http.HttpServlet.service(HttpServlet.java:856)



root cause java.lang.NoClassDefFoundError: org/apache/jsp/realsql/REALSQL org.apache.jsp.DB2Abfrage_jsp._jspService(DB2Abfrage_jsp.java:207) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:268) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:258) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:205) javax.servlet.http.HttpServlet.service(HttpServlet.java:856)Wo liegt der Fehler? In meiner Tomcatkonfig? In meiner Klasse? Dies ist mein erster Post ich hoffe ich habe soweit alles richtig gemacht. Danke.
 
Hallo allerseits, ich habe das selbe Problem das Galaxydriver oben beschrieben hat:
Ich habe eine Klasse namens "Auswertung" geschrieben die sich im Package "quiz" befindet, nun wollte ich sie in einer jsp importieren, doch sobald ich sie im Browser aufrufe erscheint folgende Exeption:

Code:
org.apache.jasper.JasperException
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:207)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:198)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:138)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2459)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:132)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:593)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:593)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:126)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
	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)


root cause 

java.lang.NullPointerException
	at org.apache.jsp.Uebersicht_jsp._jspService(Uebersicht_jsp.java:48)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:92)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:162)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:198)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:138)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2459)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:132)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:593)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:593)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:126)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
	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)

Ich verwende eclipse mit dem sysdeo-Plugin für tomcat.
Importiert habe ich die Klasse eigentlich mit folgendem Befehl:
Code:
<%@ page import="quiz.Auswertung;" %>
Das Package liegt als Ordner im WEB-INF/classes Verzeichnis meiner WebApplikation.
 
Zurück