auf dem Rechner läuft Tomcat 5.0.30, Win XP Prof, IIS 5.1, PHP 5.1.1.
C:\>java -version
java version "1.5.0_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_05-b05)
Java HotSpot(TM) Client VM (build 1.5.0_05-b05, mixed mode)
Also im Webverzeichnis c:\web\ver1\ leigt eine php Dateien in der ein Applet aufgerufen werden soll.
Die Applet Klasse ist in einem jar-Archiv, "Archiv1.jar".
Das gleiche Archiv wird ebenfalls ins Tomcat Verzeichnis kopiert, in dem Applet befindet sich ebenfalls ein Packeger das
Zugriff auf eine mssql DB ermöglich, die erste Klasse, die die Verbindung zwischen dem Applet und dem Servelt herstellen
soll gibt in der Javakonsole folgende Fehlermeldung:
java.io.IOException: Server returned HTTP response code: 500 for URL: http://Rechner1/PServer/KLEnv
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at Ediflow.CEnvironment.ReadEnv(KLEnvironment.java:336)
at Ediflow.CEnvironment.CreateEnvironment(KLEnvironment.java:191)
...
Wenn ich in der Klasse "KLEnviroment" in der Zeile 336 schaue:
...
URLConnection con = getEnvServletConnection();
OutputStream outstream = con.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(outstream);
oos.writeObject(DateiName);
oos.flush();
oos.close();
// receive result from servlet
InputStream instr = con.getInputStream(); // Zeile 336
ObjectInputStream inputFromServlet = new ObjectInputStream(instr);
...
In der Datei "web.xml" sind alle Klassen mit Packagename eingetragen, die die DB ansprechen solle.
In der Datei "server.xml" ist das Projekt ebenfalls eingetragen mit:
<Context path="/PServer" docBase="PServer" debug="1" reloadable="true" crossContext="true">
...
In der Datei "uiworkemap.poropetries" ist folgender Eintrag:
...
/PServer=ajp13
/PServer/*=ajp13
...
In der Datei "workers.properties" ist mein aktuelle jdk:
...
workers.java_home=c:\Programme\java\jdk1.5.0_05
...
eingetragen.
Oben aus der Fehlermeldung geht hervor dass der Tomcate die "/KLEnv" Klasse nicht finden kann, wie kann ich dem Tomcate
das mit teilen wie er die Klasse finden kann?
Danke im Voraus.
Grüße Bernhard
Bernhard Schimanski wrote:
> java.io.IOException: Server returned HTTP response code: 500 for URL:
> http://Rechner1/PServer/KLEnv
> at
> sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
> at Ediflow.CEnvironment.ReadEnv(KLEnvironment.java:336)
> at Ediflow.CEnvironment.CreateEnvironment(KLEnvironment.java:191)
> ...
>
> Oben aus der Fehlermeldung geht hervor dass der Tomcate die "/KLEnv"
> Klasse nicht finden kann, wie kann ich dem Tomcate das mit teilen wie er
> die Klasse finden kann?
Äh, Moment. Ich verstehe das so, dass tomcat zunächstmal die URL
"http://Rechner1/PServer/KLEnv" mit dem FehlerCode 500 (="Interner
Fehler" laut Google) beantwortet.
Passiert das nur, wenn Du diese URL über dein Applet aufrufst?
Was passiert, wenn Du diese URL im Browser aufrufst?
Dass Du in der web.xml von tomcat entsprechende Einträge vornehmen
musst, um eine URL auf ein Servlet (und ein Servlet auf eine
entsprechende Klasse) zu mappen, weisst Du?
Ciao,
Ingo
>
> Was passiert, wenn Du diese URL im Browser aufrufst?
Leider nur Fehlermeldung, aus den ich nicht schlau bin :-(
http://Rechner1/PServer/KLEnv
Fehler:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Error allocating a servlet instance
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:300)
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:374)
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:743)
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675)
org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:866)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
java.lang.Thread.run(Unknown Source)
root cause
java.lang.UnsupportedClassVersionError: Server/KLEnvServlet (Unsupported major.minor version 49.0)
java.lang.ClassLoader.defineClass0(Native Method)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1634)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:860)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1307)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:300)
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:374)
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:743)
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675)
org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:866)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
java.lang.Thread.run(Unknown Source)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.
--------------------------------------------------------------------------------
Das alles wird im Browser angezeigt, in der log ist noch mehr.
>
> Dass Du in der web.xml von tomcat entsprechende Einträge vornehmen
> musst, um eine URL auf ein Servlet (und ein Servlet auf eine
> entsprechende Klasse) zu mappen, weisst Du?
ja, in der Datei "web.xml" sind alle Klassen mit Packagename eingetragen, die die DB ansprechen solle.
In der web.xml sind folgende Einträge:
...
<servlet>
<servlet-name>EFEnv</servlet-name>
<servlet-class>Server.KLEnvServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>EFEnv</servlet-name>
<url-pattern>/EFEnv</url-pattern>
</servlet-mapping>
...
Die Klasse "KLEnvServlet" ist in dem Package "Server".
Grüße Bernhard
> root cause
>
> java.lang.UnsupportedClassVersionError: Server/KLEnvServlet (Unsupported
> major.minor version 49.0)
Dein Code ist mit J2SE 5.0 kompiliert, aber du benutzt nur ein JRE 1.4.2
oder älter zum Ausführen. Das geht nicht. Entweder mit "-target 1.4"
kompilieren oder aber dafür sorgen, dass auf deinem Server J2SE 5.0 aka
JRE 1.5.0 läuft.
> note The full stack trace of the root cause is available in the Apache
> Tomcat/5.0.30 logs.
Und wenn du 1.5.0 laufen lässt, kannst du auch Tomcat 5.5.x benutzen :)
--
Stefan Matthias Aust
danke für den Hinweis.
Stefan Matthias Aust schrieb:
> Bernhard Schimanski schrieb:
>
>> root cause
>>
>> java.lang.UnsupportedClassVersionError: Server/KLEnvServlet
>> (Unsupported major.minor version 49.0)
>
>
> Dein Code ist mit J2SE 5.0 kompiliert, aber du benutzt nur ein JRE 1.4.2
> oder älter zum Ausführen. Das geht nicht. Entweder mit "-target 1.4"
> kompilieren oder aber dafür sorgen, dass auf deinem Server J2SE 5.0 aka
> JRE 1.5.0 läuft.
ja, das stimmt, ich kompieliere mit 1.5.0 und im Tomcat: http://recghner1:8080/manager/status wird die JVM Version:
1.4.2_08-b03 angezeigt.
In der Datei c:\Programme\Apache Software Foundation\Tomcat 5.0\conf\workers.properties habe ich eine Stelle gefunden
mit "java_home": workers.java_home=c:\Programme\Java\jre1.5.0_05, dort habe ich die bei mir aktuelle JRE eingetragen,
den Tomcat über Dienste neu gestarten aber im Statusmanager wird noch immer die 1.4.1_08 angezeitgt, wie kann ich den
Tomcat umstellen, welche Datei ist dafür zuständig?
>
>> note The full stack trace of the root cause is available in the Apache
>> Tomcat/5.0.30 logs.
>
>
> Und wenn du 1.5.0 laufen lässt, kannst du auch Tomcat 5.5.x benutzen :)
>
Danke für den Hinweis, werde säter in Erwähgung ziehen.
Grüße Bernhard
die Java Version habe ich für Tomcat schon umgestellt, er nimmt jetzt die 1.5.0 Java Version.
Grüße Bernhard
Bernhard Schimanski schrieb:
> Und wenn du 1.5.0 laufen lässt, kannst du auch Tomcat 5.5.x benutzen :)
Wenn ich mich recht erinnere, gehen Tomcat 5.0 und Java 1.5 nicht
gut zusammen, wieder irgendwelche XML-Parser Geschichten. Ich
rate auf jeden Fall zu Tomcat 5.5
--
-----------------------------------------------
Andreas Jaeger
Institut für Geoinformatik, Universität Münster
http://ifgi.uni-muenster.de
-----------------------------------------------