【问题标题】:ClassNotFoundException in Java AppletJava Applet 中的 ClassNotFoundException
【发布时间】:2016-10-05 09:18:20
【问题描述】:

我有一个非常基本的 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,以便我可以继续阅读这本书?

【问题讨论】:

  • 不是classnotfoundexception,是非法状态异常
  • 请问你的类的构造函数在哪里?
  • 小程序传统上没有主要方法。话虽如此,小程序现在已被弃用,不再受支持

标签: java applet awt runtime-error classnotfoundexception


【解决方案1】:

.Desktop.Great Ideas in Computer Science with Java Exercises.HelloWorld.class 显然不是一个有效的全限定类名。将包名称与目录结构匹配并使用合法名称(一个不能有空格)。

【讨论】:

  • 空格已被删除,小程序仍然无法运行。控制台日志错误已更新:
【解决方案2】:

main 方法中的内容放入initrun 方法中。小程序通常没有 main 方法。

话虽如此,applet 现在已被弃用并且通常不再受支持,大多数(如果不是所有)浏览器都会主动阻止它们,并且 Oracle 决定取消对 applet 插件的支持。

也许你应该仔细看看How to use Applets

更新

现在错误已更改,这表明您尚未编译 .java 文件和/或未在您期望的位置编译它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 2014-07-21
    • 2013-07-25
    • 2012-09-08
    • 1970-01-01
    相关资源
    最近更新 更多