【问题标题】:java.lang.ClassNotFoundException when trying to load applet from a .jar file尝试从 .jar 文件加载小程序时出现 java.lang.ClassNotFoundException
【发布时间】:2012-01-18 16:34:27
【问题描述】:

很抱歉这个问题,但我是 Java 新手。我尝试搜索类似的问题,并且确实找到了一些答案,但在我的情况下没有一个有效,所以这里是:

我正在尝试在网页上加载 Java 小程序。小程序应该从 .jar 文件 (UCFApplet.jar) 加载,但无论如何我都无法加载它。

这是小程序的 html:

<applet id="UCFApplet" height="200" width="200" 
  code="com.fujitsu.test.applet.UCFApplet" 
  archive="UCFApplet.jar">
</applet>

jar 文件位于服务器上,与尝试加载它的 html 文件位于同一文件夹中。在 jar 文件中,com/fujitsu/test/applet 文件夹中有一个 UCFApplet.class 文件。

我在 Java 控制台上遇到的错误如下:

Java Plug-in 1.6.0_29
Using JRE version 1.6.0_29-b11 Java HotSpot(TM) Client VM
User home directory = C:\Users\PTMAIAJ
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
l:   dump classloader list
m:   print memory usage
o:   trigger logging
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
x:   clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------


load: class com.fujitsu.test.applet.UCFApplet not found.
java.lang.ClassNotFoundException: com.fujitsu.test.applet.UCFApplet
    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(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassNotFoundException: com.fujitsu.test.applet.UCFApplet

如您所见,我使用的是 jre 1.6.0_29 build 11,从我在 Oracle 页面上获得的信息来看,它是最新版本。这发生在所有浏览器(IE 9、FF、Chrome)上。

我怀疑这可能与无法访问 .jar 文件有关,因为如果我将 html 代码更改为虚拟名称,例如 archive="thisFileDoesNotExist.jar" 它会给我同样的错误。但我真的不知道该放什么才能让它发挥作用。

知道我做错了什么吗?

谢谢你和最好的问候,

若昂·玛雅

【问题讨论】:

  • 删除所有的 com... 只放 code="UCFApplet"
  • 已经试过了,还是不行……其实我试过code="UCFApplet", code="UCFApplet.class", code="com.fujitsu.test.applet.UCFApplet ”,和代码=“com.fujitsu.test.applet.UCFApplet.class”。没有工作......我总是遇到同样的问题。有趣的是,该小程序在 Eclipse 上工作,但在网页上却给出了上述异常... :(
  • 您是否找到了解决方案?

标签: java applet classnotfoundexception


【解决方案1】:

您的描述似乎是正确的,因此请尝试以下操作。

首先检查浏览器是否可以下载jar。在浏览器中输入 jar 文件的直接 URL。例如,如果您的 html 可以通过键入来访问

http://localhost/myapp/mypage.html

类型

http://localhost/myapp/UCFApplet.jar

如果您可以下载 jar 并且它与您的 jar 相同,请继续。

检查罐子本身。输入命令行

jar vft UCFApplet.jar

并查看输出。你应该能够找到你的班级:

/com/fujitsu/test/applet/UCFApplet.class

顺便说一句,您是否知道 applet 标签已被弃用且 Opera 和 Chrome 不支持该标签?要支持所有浏览器,您应该使用标签object

【讨论】:

  • 您好,感谢您的回复。我可以下载 jar 文件,当我执行“jar vft”时我可以看到我的课程。感谢您提供关于 标签的提示。语法和小程序标签一样吗?
  • 我遇到了同样的问题,该类是它应该在的地方,但小程序仍然给出同样的错误。我应该尝试将项目导出为可运行的 jar 吗?我的印象不适用于小程序,但可能是错误的。
【解决方案2】:

尝试在 Java 控制面板中打开跟踪。然后它将在以下路径中生成一个可能有帮助的日志文件:

%USERPROFILE%\AppData\LocalLow\sun\java\Deployment\log

在我的情况下,我遇到了一个错误,该错误仅在我打开跟踪时出现,并且仅显示为“ClassNotFoundException”:

java.util.zip.ZipException: duplicate entry: META-INF/LICENSE.txt

小程序加载器拒绝 jar,因为 zip 文件有重复的文件条目。奇怪的是appletviewer.exe 能够很好地加载和运行这个 jar。

【讨论】:

    【解决方案3】:

    对于那些在公司代理后面运行的人。根据 Oracle ClassNotFoundException是“代理设置不正确时出现的常见错误”

    见:How do I configure proxy settings for Java?

    【讨论】:

      猜你喜欢
      • 2012-09-05
      • 2012-06-18
      • 1970-01-01
      • 2017-05-24
      • 2019-03-18
      • 2017-02-15
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      相关资源
      最近更新 更多