2011-12-12 66 views
2

对不起这个问题,但我是Java的新手。我试图寻找类似的问题,我找到了一些答案,但没有在我的情况下工作,所以这里去:尝试从.jar文件加载小程序时发生java.lang.ClassNotFoundException

我想加载一个Java小程序在网页上。该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建设11个,其中,从我得到的甲骨文页面,是最新版本。这发生在所有浏览器(IE 9,FF,Chrome)上。

我怀疑它可能与无法访问.jar文件有关,因为如果我将html代码更改为诸如archive =“thisFileDoesNotExist.jar”这样的虚拟名称,它会给我带来同样的错误。但我真的不知道应该放在那里才能使它工作。

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

谢谢你,最好的问候,

若昂·马亚

+0

删除所有的COM ...,只是把唯一码=“UCFApplet” –

+0

已经尝试过,并没有奏效。其实,我试图代码= “UCFApplet”,代码=“UCFApplet.class”,代码=“com.fujitsu.test.applet.UCFApplet”,代码=“com.fujitsu.test.applet.UCFApplet.class”。没有工作......我总是遇到同样的问题。有趣的是,该小程序在Eclipse上工作,但在网页上,它给出了上述例外...... :( –

+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

+0

嗨,感谢您的答复。我可以donwload jar文件,当我做“jar vft”时,我可以看到我的课程。感谢标记的提示。语法与applet标记相同吗? –

+0

我遇到了同样的问题,并且类是它应该在的地方但是applet仍然会给出相同的错误,我应该尝试将项目导出为可运行的jar吗?我的印象是不适用于applet,但可能是错误的。 –

3

尝试在java控制面板中启用跟踪。然后,它会产生以下路径中的日志文件,可以帮助:

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

在我来说,我有一个错误,只有当我打开追踪出现,并呈现为一个简单的“ClassNotFoundException的”:

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

小应用程序加载程序拒绝该jar,因为zip文件有重复的文件条目。奇怪appletviewer.exe能够加载和运行这个罐子罚款。

相关问题