尝试从.jar文件加载applet时出现java.lang.ClassNotFoundException

时间:2011-12-12 17:41:27

标签: java applet classnotfoundexception

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

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

这是applet的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”,它会给我同样的错误。但我真的不知道该怎么做才能让它发挥作用。

关于我可能做错什么的任何想法?

谢谢你,最诚挚的问候,

Joao Maia

3 个答案:

答案 0 :(得分:4)

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

首先检查浏览器是否可以下载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

BTW你知道applet标签已被弃用,Opera和Chrome不支持吗?要支持所有浏览器,您应使用标记object

答案 1 :(得分:3)

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

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

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

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

applet加载程序拒绝了jar,因为zip文件有重复的文件条目。奇怪的是appletviewer.exe能够加载并运行这个罐子。

答案 2 :(得分:0)

对于那些在公司代理服务器后面运行的人。根据Oracle ClassNotFoundException “如果代理设置不正确,则会出现常见错误”

proxy setting for Java

请参阅:How do I configure proxy settings for Java?