wood burning stoves 2.0*
The moose likes Servlets and the fly likes HELP! Servlet calling Applet Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

JavaRanch » Java Forums » Java » Servlets
Bookmark "HELP! Servlet calling Applet" Watch "HELP! Servlet calling Applet" New topic

HELP! Servlet calling Applet

Dave Donohoe
Ranch Hand

Joined: May 16, 2000
Posts: 73
I have a Servlet calling an applet, but I get a FileNotFoundException.
I call the applet like so -
m_pwOut.print("<APPLET CODE='DavesApplet.class' WIDTH=50 HEIGHT=50 CODEBASE='/applet'>");
The Dir structure in tomcat is like so -
And this is the exception I get -
load: class DavesApplet.class not found.
java.lang.ClassNotFoundException: java.io.FileNotFoundException: File not found: http://localhost:8080/applet/DavesApplet/class.class
at sun.plugin.protocol.jdk12.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at sun.applet.AppletClassLoader.getBytes(Unknown Source)
at sun.applet.AppletClassLoader.access$100(Unknown Source)
at sun.applet.AppletClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at sun.plugin.security.PluginClassLoader.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)
Any Ideas???
William Brogden
Author and all-around good cowpoke

Joined: Mar 22, 2000
Posts: 12792
The reason is that the browser is looking for the applet class files in the wrong place. You need to either:
1. Give a complete URL for the CODE
2. Put a <BASE> tag in the head area of the html page that points to the location of the class files.
I prefer 2 because that also gives the browser where to look for graphics and other resources.
The syntax is:
<BASE HREF="someURL" >
Tim Holloway
Saloon Keeper

Joined: Jun 25, 2001
Posts: 16103

Semantically speaking, a servlet cannot "call" an applet. The best you can do is have a servlet respond to a request with HTML that causes (we hope!) the user's CLIENT (browser) to request the applet (assuming you're not running "new and improved" Internet Explorer which doesn't have support for that silly old useless Java :roll: (Bill Gate's opinion, not mine).
Files pulled by the browser are pulled in exactly the same way whether they're html, gif, OR jar or classfiles. In other words, the WEB-INF/classes classpath is meaningless to the client. Only the SERVER uses that path. The applet's classes aren't going to be executed on the server, just copied to the client so IT can execute them, so the place to put them is in a copyable directory.
From your sample, I think you got that straight. However, if that a verbatim error message, why is it looking for a class file named "class.class?" I'd check that applet tag again.

Customer surveys are for companies who didn't pay proper attention to begin with.
Meng Tan
Ranch Hand

Joined: Jan 20, 2001
Posts: 115
u can also try using CODEBASE="/myApp/applet".
GeeCON Prague 2014
subject: HELP! Servlet calling Applet