JSP Class not found beim Applet-Start

henpara

Bekanntes Mitglied
Hallo zusammen.
Folgendes Problem:
Ich habe ein dynamisches Webprojekt in Eclipse erstellt. Javasources eingefügt, erfolgreich kompiliert. Webinhalte richtig eingefügt und benötigte jars im Web-Inf Ordner/lib Ordner drin.

Wenn ich das Programm dann als "run on server" (Tomcat v7.0) starte, kann ich mich auch einloggen (Basic authentifizierung gewählt), nur kommt danach leider nix mehr außer folgender Fehlermeldung.
Java Plug-in 1.6.0_24
Verwendung der JRE-Version 1.6.0_24-b07 Java HotSpot(TM) Client VM
[...]
Laden: Klasse org.ctstransplant.webtx.client.WebTXClient.class nicht gefunden
java.lang.ClassNotFoundException: org.ctstransplant.webtx.client.WebTXClient.class
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadCode(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Hier meine .jsp-Datei, die dafür verantwortlich sein sollte (Hab selber bisher wenig bis keine Ahnung von jsp, habe die Datei übernommen (Auf Tomcat 3.2 mit anderer Verzeichnisstruktur und Property-Dateien von Tomcat lief das ganze schonmal).

Java:
<html>
<head>
<title>WebTx Statistics Client. (Server: <%=request.getServerName()%>)
</title>
</head>
<body bgcolor="#CCCCCC">
	<%
		java.util.Enumeration exSessions = org.ctstransplant.webtx.server.session.SessionManager.getSessions();
	%>
	<%--get the remote user from the request to reuse it as an applet param--%>
	<%
		String UserName = request.getRemoteUser();
	%>
	<%
		boolean alreadyLoggedOn = false;
	%>
	<%
		boolean exit = false;
	%>
	<%
		while (exSessions.hasMoreElements()) {
			String sess = (exSessions.nextElement()).toString();
			sess = sess.substring(sess.length() - 2, sess.length());
			if (UserName.equals(sess)) {
				alreadyLoggedOn = true;
			}
		}
	%>
	<script language="JavaScript" type="text/javascript">
if (<%=alreadyLoggedOn%>) {
		alert("A session for user <%=UserName%> already exists. A new session will be established!");
	}
</script>
	<%--this should include admission's input, set the sessionhome attribute and return
commented out to client (visible for debug purposes)--%>
<%--<!--
<jsp:include page="/servlet/admission" flush="true"/>
-->--%>
	<%--retrieve the sessionhome attribute 
put into the request by the above servlet (AdmissionServlet)--%>
	<%
		String SessionHome = (String) request.getAttribute("org.ctstransplant.webtx.SessionHome");
	%>
	<%--retrieve the database attribute 
put into the request by the above servlet (AdmissionServlet)--%>
	<%
		String DataBase = (String) request.getAttribute("org.ctstransplant.webtx.DataBase");
	%>
	<%--show the java plugin in the browser
using the sessionhome attribute value as dynamic parameter--%>
	<jsp:plugin type="applet"
		code="org.ctstransplant.webtx.client.WebTXClient.class"
		codebase="applet" jreversion="1.6" width="1000" height="820">
		<jsp:params>
			<jsp:param name="SessionHome" value="<%= SessionHome %>" />
			<jsp:param name="UserName" value="<%= UserName %>" />
			<jsp:param name="DataBase" value="<%= DataBase %>" />
			<jsp:param name="archive" value="client.jar" />
		</jsp:params>
		<jsp:fallback>
			Plugin tag OBJECT or EMBED not supported by browser.
			Please update your browser!
		</jsp:fallback>
	</jsp:plugin>
</body>
</html>
Unter build/classes/ existiert die Klassenstruktur org/ctstransplant/webtx/client und dort existiert die Datei webtxclient.class auch.

Jemand eine Idee?

lg
 
Liegt möglicherweise an deinem codebase-Attribut innerhalb der Applet-Einbindung.
Versuche mal
Code:
codebase="./applet"
, wenn dein Applet in einem Verzeichnis namens applet unterhalb deiner JSP-Seite liegt. Ansonsten musst du das möglicherweise anpassen.
 
Liegt möglicherweise an deinem codebase-Attribut innerhalb der Applet-Einbindung.
Versuche mal codebase="./applet" , wenn dein Applet in einem Verzeichnis namens applet unterhalb deiner JSP-Seite liegt. Ansonsten musst du das möglicherweise anpassen.

Habe wie gesagt das ganze mit Eclipse erstellt und auch über das Plugin den Tomcat am laufen.

Unter Eclipse sieht das folgendermaßen aus:

im pluginverzeichnis:
E:\EclipseJ_workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\

gibt es das Verzeichnis wTx, in welchem die META-INF und WEB-INF verzeichnisse, sowie die benötigten html und die jsp-Dateien liegen.
(die Index.html ruft die client.jsp auf - was ja auch funktioniert.)
Im web-inf ordner gibt es classes und lib, welche beide befüllt sind - unter classes die oben genannte hierarchie org.ctstransplant.webtx.client.webtxclient.class

die web.xml schaut folgendermaßen aus:
Java:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0">
	<servlet>
		<servlet-name>admission</servlet-name>
		<servlet-class>org.ctstransplant.webtx.server.servlet.AdmissionServlet</servlet-class>
	</servlet>
	<servlet>
		<servlet-name>error</servlet-name>
		<servlet-class>org.ctstransplant.webtx.server.servlet.ErrorServlet</servlet-class>
	</servlet>
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>WebTX Protected Area</web-resource-name>
			<url-pattern>*.jsp</url-pattern>
		</web-resource-collection>
		<auth-constraint>
			<role-name>webtxuser</role-name>
		</auth-constraint>
	</security-constraint>
	<login-config>
		<auth-method>BASIC</auth-method>
		<realm-name>WebTX Users</realm-name>
	</login-config>
	<security-role>
		<role-name>webtxuser</role-name>
	</security-role>
</web-app>

applet und ./applet zu ändern hat noch nichts geholfen. (auch wtx oder ./wtx gleicher fehler)

lg
 
So, hab einen Teil der Dunkelheit erhellen können:

er erwartet in dem Verzeichnis wohl eine .jar - Datei mit interner passender Klassenstruktur.
Frage: Liege ich da richtig, daß ein applet in Form einer .jar - Datei anwesend sein muss?

Wenn ja:
Wenn ich die Java-Klassen für die .jar im web-Projekt habe, kann ich ihm irgendwie sagen, daß er die Klasse zu einer .jar builden soll? Also quasi den Build-Vorgang automatisieren?

Oder kann ich dem Applet sagen, daß seine Klassen, die er braucht alle unter web-inf/classes zu finden sind? (also das verzeichnis, statt eine .jar als Suchgrundlage sehen)

lg
 
Mit dem Thema kenne ich mich nicht aus, aber in der FAQ findest du einen Beitrag zum Erzeugen von Jar-Dateien, sowie zum Einbinden von Jar-Dateien (Applets) in HTML-Dateien.
Vielleicht kommst du damit weiter?
 

Zurück
Oben