[英]java.lang.ClassNotFoundException when loading a class from a jar file
[英]java.lang.ClassNotFoundException when trying to load applet from a .jar file
很抱歉这个问题,但是我是Java的新手。 我尝试搜索类似的问题,但确实找到了一些答案,但在我的情况下却没有任何效果,因此,方法如下:
我正在尝试在网页上加载Java小程序。 应该从.jar文件(UCFApplet.jar)加载applet,但是无论如何我都无法加载它。
这是该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页面上可以看到,它是最新的build。 在所有浏览器(IE 9,FF,Chrome)上都会发生这种情况。
我怀疑这可能与无法访问.jar文件有关,因为如果将html代码更改为虚拟名称(例如archive =“ thisFileDoesNotExist.jar”),则会出现相同的错误。 但是我真的不知道该怎么放置才能使它工作。
关于我会做错什么的任何想法吗?
感谢你并致以真诚的问候,
若奥·迈亚(Joao Maia)
您的描述符似乎是正确的,因此请尝试以下操作。
首先检查浏览器是否可以下载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不支持applet标签吗? 要支持所有浏览器,您应该使用标记object
尝试在Java控制面板中打开跟踪。 然后,它将在以下路径中生成一个日志文件,该文件可能会有所帮助:
%USERPROFILE%\AppData\LocalLow\sun\java\Deployment\log
就我而言,我有一个错误仅在我打开跟踪时出现,并且仅显示为“ ClassNotFoundException”:
java.util.zip.ZipException: duplicate entry: META-INF/LICENSE.txt
小程序加载器拒绝jar,因为zip文件具有重复的文件条目。 奇怪的是appletviewer.exe
能够很好地加载和运行此jar。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.