繁体   English   中英

JApplet从签名的jar中抛出ClassNotFoundException

[英]JApplet throws ClassNotFoundException from signed jar

我建立了一个applet(来自JApplet),它使用了其他几个jar文件。 我已经签名了包含主类的jar,并包含了我需要的所有jar(我认为)。 但是,无论我尝试什么,我都会得到“ java.lang.ClassNotFoundException:newposting”,其中“ newposting”是我签名的jar中的主要类。 我为此使用以下html:

<p><applet code="newposting" 
archive="HartfordRowingNewPosting.jar, 
javax.mail.jar, 
jcalendar-1.4.jar, 
junit-4.6.jar, 
jgoodies-common-1.2.0.jar, 
jgoodies-looks-2.4.1.jar, 
mysql-connector-java-5.1.25-bin.jar" 
width="500" height="850">
<param name="permissions" value="sandbox" /> 
<param name="codebase" value="HartfordRowingNewPosting.jar" /> 
</applet></p>

jar和html都位于服务器上的同一文件夹中。 我尝试了几种路径规范的组合。 我也尝试过使用jnlp,但得到相同的错误。 在过去一个月左右的时间里,我一直对此感到沮丧。 有人可以阐明这一点吗?

加载主类时抛出ClassNotFoundException的事实意味着无法从jar读取类或找不到jar。

我希望您能验证自己的确在罐子里。 如果没有尝试。 只是要确保尝试使用未签名的jar并查看是否存在完全相同的错误。

如果是这样,您仍有2种可能性。

您确定您的课程确实称为新newposting吗? 小写? 在默认包中? 注意:这必须是完全合格的类名

接下来,测试您的jar是否确实可用于浏览器。 为此,只需将jar名称复制并粘贴到浏览器中,并在其前面加上您的URL。 例如,如果可以在http://myhost/myapp/mypage.html下找到HTML,请尝试使用URL http://myhost/myapp/HartfordRowingNewPosting.jar

BTW参数codebase是什么意思? 是您的应用程序级别参数吗? 我不确定,但是请确保这不会使浏览器与标签applet支持的属性codebase混淆。 此属性通常为. <applet codebase="." 这意味着“从当前目录下载jar”。 这与说java -cp .相同java -cp . 从命令行运行Java时。

顺便说一句,您知道小程序在10年前几乎已经过时了吗? 而且据我所知,您将MySql JDBC驱动程序包括在类路径中。 您应该了解,在大多数情况下这是行不通的,因为通常存在不允许客户端和服务器之间使用JDBC协议的防火墙。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM