Java Applet 中的 ClassNotFoundException
ClassNotFoundException in Java Applet
我有一个非常基本的 Java 小程序,它不能在 Safari 中运行,作为对不起作用的旧教科书的练习。我在 OSX El Capitan 上使用旧版 Java SDK 1.6 版。 HTML 是
<html>
<head>
<title>2-1 Test</title>
</head>
<body>
<applet code="HelloWorld.class"></applet>
</body>
</html>
Java 程序是:
import java.awt.*;
import java.applet.*;
public class HelloWorld extends java.applet.Applet{
TextField m1, m2, m3;
public void main(){
m1 = new TextField(60);
m2 = new TextField(60);
m3 = new TextField(60);
m1.setText("Good day to you!");
m2.setText("My name is Cynthia.");
m3.setText("This is the third line.");
add(m1);
add(m2);
add(m3);
}
}
HTML和Java文件(编译成HelloWorld.class)在同一个目录下(不涉及包)
更新:空格已从文件路径中删除。 Java 控制台现在出现以下内容:
basic: tap installed
basic: Creating PluginEmbeddedFrame served by PlaceHolderServerName-2581
basic: Done creating PluginEmbeddedFrame
basic: Added progress listener: sun.plugin.util.ProgressMonitorAdapter@7e29e923
security: Expected Main URL: file:/Users/Desktop/GreatIdeasInComputerScienceWithJavaExercises/HelloWorld.class
java.lang.ClassNotFoundException: HelloWorld.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
basic: load: class HelloWorld.class not found.
java.lang.ClassNotFoundException: HelloWorld.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
security: Accessing keys and certificate in Mozilla user profile: null
security: Reset deny session certificate store
security: Reset deny session certificate store
basic: Removed progress listener: sun.plugin.util.ProgressMonitorAdapter@7e29e923
basic: Dialog type is not candidate for embedding
basic: Dialog type is not candidate for embedding
任何人都可以建议我需要做什么才能正确设置 Java 以便我可以继续阅读这本书吗?
.Desktop.Great Ideas in Computer Science with Java Exercises.HelloWorld.class
显然不是有效的完全限定 class 名称。将包名称与目录结构匹配并使用合法名称(没有空格)。
将您的 main
方法中的内容放入 init
或 run
方法中。小程序通常没有 main
方法。
话虽如此,applet 现在已被弃用并且通常不再受支持,大多数(如果不是全部)浏览器都主动阻止它们,并且 Oracle 决定删除对 applet 插件的支持。
也许你应该仔细看看 How to use Applets
已更新
现在错误已经改变,这表明您还没有编译 .java
文件 and/or 它没有编译到您期望的位置
我有一个非常基本的 Java 小程序,它不能在 Safari 中运行,作为对不起作用的旧教科书的练习。我在 OSX El Capitan 上使用旧版 Java SDK 1.6 版。 HTML 是
<html>
<head>
<title>2-1 Test</title>
</head>
<body>
<applet code="HelloWorld.class"></applet>
</body>
</html>
Java 程序是:
import java.awt.*;
import java.applet.*;
public class HelloWorld extends java.applet.Applet{
TextField m1, m2, m3;
public void main(){
m1 = new TextField(60);
m2 = new TextField(60);
m3 = new TextField(60);
m1.setText("Good day to you!");
m2.setText("My name is Cynthia.");
m3.setText("This is the third line.");
add(m1);
add(m2);
add(m3);
}
}
HTML和Java文件(编译成HelloWorld.class)在同一个目录下(不涉及包)
更新:空格已从文件路径中删除。 Java 控制台现在出现以下内容:
basic: tap installed
basic: Creating PluginEmbeddedFrame served by PlaceHolderServerName-2581
basic: Done creating PluginEmbeddedFrame
basic: Added progress listener: sun.plugin.util.ProgressMonitorAdapter@7e29e923
security: Expected Main URL: file:/Users/Desktop/GreatIdeasInComputerScienceWithJavaExercises/HelloWorld.class
java.lang.ClassNotFoundException: HelloWorld.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
basic: load: class HelloWorld.class not found.
java.lang.ClassNotFoundException: HelloWorld.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
security: Accessing keys and certificate in Mozilla user profile: null
security: Reset deny session certificate store
security: Reset deny session certificate store
basic: Removed progress listener: sun.plugin.util.ProgressMonitorAdapter@7e29e923
basic: Dialog type is not candidate for embedding
basic: Dialog type is not candidate for embedding
任何人都可以建议我需要做什么才能正确设置 Java 以便我可以继续阅读这本书吗?
.Desktop.Great Ideas in Computer Science with Java Exercises.HelloWorld.class
显然不是有效的完全限定 class 名称。将包名称与目录结构匹配并使用合法名称(没有空格)。
将您的 main
方法中的内容放入 init
或 run
方法中。小程序通常没有 main
方法。
话虽如此,applet 现在已被弃用并且通常不再受支持,大多数(如果不是全部)浏览器都主动阻止它们,并且 Oracle 决定删除对 applet 插件的支持。
也许你应该仔细看看 How to use Applets
已更新
现在错误已经改变,这表明您还没有编译 .java
文件 and/or 它没有编译到您期望的位置