This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
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 - myApp/web-inf/classes/com/davespackage/servlet.class myApp/applet/DavesApplet.class 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???
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" >
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.
An IDE is no substitute for an Intelligent Developer.