2010-06-10 53 views
1

这让我感觉很不舒服。我已检查并重新检查拼写和路径。我尝试了几乎所有路径组合,包括相对路径,绝对路径和完整http路径。我不断收到以下错误尝试加载Java小程序时:Java Applet部署,ClassNotFoundException(主类)

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的名称,以查看是否针对错误的文件名(同一错误)获取了不同的错误。

我已经手工完成大干快上的罐子,以确保服务器响应请求(它是)。

我曾尝试与不代码库标签,所有不同品种的路径(开始于那些越来越坏“幻数”的错误)。

我知道,当一个依赖加载失败这个错误有时会弹出,因此它可能会产生误导,但所有的依赖关系都存在,占了,并且是可提取通过手动的GET。

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

按我的Java控制台从浏览器,我运行Java插件1.6.0_20。这来自我开发applet的相同机器,它通过Eclipse运行良好。

最后,我踢Fiddler2,我没有看到的jar文件的任何地方的主机站点是从我的Visual Studio调试器中运行单个请求,所以它在本地主机上运行。但是我看到了对提琴手所有其他资源的请求。只是...没有罐子。任何地方。我清除了日志,清除了我的浏览器缓存,并执行了ctrl-R刷新。而且,对于Fiddler日志不是单个Jar请求。

我甚至在页面加载后的小程序标签的写入延迟(与JS),一旦所有的提琴手活动放缓。元素被写入文档(并且我可以看到100x100 Java错误窗口),但不会在提琴手上显示单个请求。

有什么建议,在我爬到角落哭泣自己睡觉之前?

编辑:从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上。

回答

0

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

我在这里尝试了很多不同的东西,我不确定确切的修复是什么。但是,我认为它是什么

1)由于我的小程序使用网络组件(Jabber/XMPP),它需要签名。 2)即使在我的测试早期,我确认了jar文件以正确的方式打包,Applet.class在根目录下,后来在我的调试中创建了一个NAnt构建脚本,用于简化构建/签署/部署过程。该构建脚本打包来自工作目录的jar,该目录是而不是应用程序的根目录。所以,AppletClient.class不再是根目录,而是嵌套在服务器的子目录中。

0

我认为Java插件有自己的缓存,你可能想尝试并清空。我正在运行Windows,我在我的控制面板中找到它。在常规选项卡中,有一个临时Internet文件部分,请参阅是否可以在其中找到某些内容?

在设置对话框中,我可以看到缓存的.jar在我的硬盘上的位置,我不得不在几次手动中对它进行核对。

此外,请确保通过在控制台中按x来清除类加载器缓存。

只是为了确保AppletClient真的在默认的类路径中,即不在包中?否则,您需要在标记中引用合格的类名(code="your.package.AppletClient")。

UPDATE:

出具体的建议,在这一点上,你可以做什么,除非你已经是尝试另一个标记样式,只是看看有什么变化。这里的东西我用:

<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="380" height="260"> 
    <param name="code" value="AppletClient" /> 
    <param name="archive" value="applet/myapplet.jar,applet/applet_dependency.jar" /> 
    <comment> 
     <embed 
      code="AppletClient.class" 
      type="application/x-java-applet;version=1.6" 
      archive="applet/myapplet.jar,applet/applet_dependency.jar" 
      width="380" 
      height="260"> 
      <noembed>No Java Support.</noembed> 
     </embed> 
    </comment> 
</object> 
+0

我清除了Java缓存(很好的提示!),但仍然没有运气,仍然没有活动的瓶子的提琴手。不,AppletClient不在类路径中。 – Matt 2010-06-10 13:17:39

+0

我的意思是不,AppletClient不在包中。它没有软件包,位于存档中列出的第一个jar的根目录。 – Matt 2010-06-10 14:52:19

+0

谢谢Lauri的帮助。在我的结尾仍然没有运气:(我用自签名证书签署了代码,因为它有一些想要签名的网络代码,我得到关于自签名证书的提示,所以它看到了很多,但仍然无法加载 – Matt 2010-06-11 18:16:08

相关问题