当前位置: 首页 > 面试题库 >

Java Applet部署,ClassNotFoundException(主类)

唐信瑞
2023-03-14
问题内容

这把我逼上了墙。我已经检查并重新检查了拼写和路径。我已经尝试了几乎所有路径组合,包括相对,绝对和完整的HTTP路径。尝试加载Java小程序时,我继续收到以下错误消息

java.lang.ClassNotFoundException: AppletClient.class
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.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: AppletClient.class

用于加载小程序的HTML:

<applet width="100" height="100" archive="applet/myapplet.jar, applet/applet_dependency.jar" code="AppletClient.class">
    <param value="blahblah" name="username">
    <param value="false" name="codebase_lookup">
</applet>

小程序位于当前页面路径的相对目录“小程序”中。我解压缩了jar文件,可以看到AppletClient.class。而且,在项目的源代码中,拼写方式是这样(套管和全部)。我尝试使用/不使用参数。我已更改了applet
include标签中的存档jar的名称,只是为了查看是否由于错误的文件名而收到了其他错误(相同错误)。

我已经在jar上手动完成GET,以确保服务器正在响应请求(是)。

我尝试过使用和不使用代码库标签,并使用所有不同的路径类型(这些路径开始出现错误的“幻数”错误)。

我知道,当依赖项无法加载时,有时会弹出此错误,因此它可能会引起误解,但是所有的依赖项都存在,已说明并可以通过手动GET获取。

在每次尝试之间,我总是清除FireFox中的缓存。这些问题也在IE8和Chrome中重现。

通过浏览器中的Java控制台,我正在运行Java Plug-in
1.6.0_20。这是我在其上开发applet的同一台机器上进行的,该机器可以通过Eclipse正常运行。

最终,我开始使用Fiddler2,但在任何地方都看不到对jar文件的单个请求。主机站点是从Visual
Studio调试器运行的,因此它在localhost上运行。但是我在Fiddler上看到了对所有其他资源的请求。只是…没有罐子。任何地方。我清除了日志,清除了浏览器缓存,并进行了ctrl-
R刷新。而且,提琴手日志上没有一个Jar请求。

一旦所有Fiddler活动变慢,我甚至在页面加载后对applet标签进行了延迟写入(使用JS)。元素被写入文档(我可以看到100x100
Java错误窗口),但是Fiddler上没有显示 单个 请求。

有什么建议,在我爬到角落并哭泣入睡之前?

编辑:从Java控制台,如果我打“ l”(el)到“转储类加载器列表”,我看到的东西看起来像这样:

Live entry: key=http://localhost:55446/BaseWebSite/,http://localhost:55446/BaseWebSite/applet/myappliet.jar, http://localhost:55446/BaseWebSite/applet/applet_dependency.jar, refCount=1, threadGroup=sun.plugin2.applet.Applet2ThreadGroup[name=http://localhost:55446/BaseWebSite/-threadGroup,maxpri=4]

编辑2:小程序进行一些网络(Jabber / XMPP),所以我做了一个自签名证书,以查看是否有帮助。收到有关自签名证书的提示-它正在读取某些内容-
但仍然无法正常工作。而且它 没有 显示在Java缓存文件列表中……在Fiddler上仍然没有显示。


问题答案:

原来我的问题实际上是问题的组合。我会暂时解决一个问题,但是由于那没有用(因为还有其他问题),我会回头尝试另一种方法。

我在这里尝试了许多不同的操作,因此不确定 确切的 解决方法是什么。但是,我认为归结为

1)由于我的小程序使用了网络组件(Jabber / XMPP),因此需要对其进行签名。

2)即使在测试的初期,我仍然确认jar文件是以正确的方式打包的,并且以Applet.class为根,但后来在调试中,我创建了一个NAnt构建脚本来简化构建/签名/部署对我来说。此构建脚本从
不是 应用程序根目录的工作目录中打包了jar 。因此,AppletClient.class不再是根目录,而是嵌套在服务器子目录中。



 类似资料:
  • 当我试图在带有Jenkins和maven的weblogic 12c集群上重新部署EAR时,总是会出现以下错误: 我已经添加了

  • 问题内容: 我正在Linux Ubuntu Natty Narwhal中运行带有Tomcat 7.0.12的Eclipse Helios Service Release 1。 我一直很高兴地重新部署我的Web应用程序,直到它毫无理由地停止工作为止。显示以下异常: 在“ 服务器” 选项卡中,“本地主机上的Tomcat v7.0服务器[已启动,已同步] 我的项目显示为Tomcat v7.0 Serve

  • 我对Liferay非常陌生,仍在尝试理解部署主题。在这一点上,我更多的是一个设计师而非开发人员,目前掌握的知识主要是HTML/CSS,因此使用SDK插件是一件很有趣的事情,不用说。 但我(mac用户)目前注册为6.1 EE用户,正在使用Liferay Developer Studio,只是想在本地实例中部署一个测试主题。我一直在关注Liferay文档: http://www.liferay.com

  • 我有一个在Netbeans 7.4中定义的演示企业应用程序(ear),其中有一个Java EE模块(war)。 当我将war部署到Weblogic服务器时,部署成功,并执行ServletContextListener。 同一个war文件包含一个类,该类扩展了Application ationLifeycleListener。该类被定义为weblogic-application.xml中的侦听器 在

  • 我目前正在使用WebSphere7.0应用服务器上部署的EAR(带有OpenFaces web项目)体验ClassNotFoundException。EAR的部署没有任何问题,但是当我从web项目(包括在EAR中)访问一个页面时,我会得到ClassNotFoundException(如下所示)。我已经导出了EAR以确保所有内容都在那里并且包含了WAR文件。当我查看WAR文件时,未找到的类包含在WE

  • 我在Weblogic中使用一个分解的ear部署布局来开发一个应用程序,在向这个旧应用程序添加一个新项目后,它将不再部署,在尝试从WEB/WEB-INF/classes加载实际应用程序代码时抛出ClassNotFoundException。 目录树如下所示: 在我开始之前,我的同事已经成功部署了WEB/WEB-INF/lib目录中所有必需的jar库,并复制到Weblogic域lib目录中。我认为EJ