0

我已经构建了一个使用其他几个 jar 文件的小程序(来自 JApplet)。我已经签署了包含主类的 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>

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

4

1 回答 1

0

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

我希望你证实你的班级确实在罐子里。如果不试试。只是为了确保尝试使用未签名的 jar 并查看您是否有完全相同的错误。

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

您确定您的课程确实被调用了newposting吗?小写?在默认包中?注意:这必须是完全限定的类名

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

顺便说一句,参数是什么codebase意思?它是您的应用程序级别参数吗?我不确定,但请确保这不会将浏览器与codebasetag 支持的属性混淆applet。这个属性通常是.<applet codebase="."这意味着“从当前目录下载 jars”。java -cp .这与从命令行运行 java 时所说的相同。

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

于 2013-08-27T13:48:45.813 回答