我用Eclipse开发了一个applet java,它包含在MyPage.html中。我打电话给网络服务并得到回应。它可以在Eclipse中使用。 Web服务与我的计算机不在同一服务器上。所以我认为我必须签署我的小程序。我做到了

keytool -genkey -keystore myStore -alias myAlias
jarsigner -keystore myStore -signedjar sMyJar.jar MyJar.jar myAlias
keytool -export -alias myAlias -file myCert.cer


我得到了一个签名的jar文件,并将其放在文件夹lib中。我的小程序有一个类Test.class,放在文件夹src中。
我将此代码放在html页面中:

<div>
<applet codebase="src/" code="Test.class" height="80" width="300"
hspace="10" vspace="10" name="Test" archive="lib/sMyJar.jar"></applet>
</div>


但是我没有弹出窗口,该弹出窗口会问我是否要执行小程序。即使我删除了请求到Web服务的代码,并且编写了一个非常简单的代码,它也没有任何改变-除了代码有效(例如显示“ hello world”)。

我见过类似的论坛问题:[http://stackoverflow.com/questions/908748/how-do-i-sign-a-java-applet-for-use-in-a-browser] [1] :他似乎也有同样的问题,并已解决。他说:“问题是我的jar文件没有以引用类文件的相同方式进行编译”。但是我不知道如何更改它,如果这是原因(我是Java的初学者)。

我应该将Cert文件放在特定的文件夹中吗?

非常感谢你的帮助。

最佳答案

当使用archive参数时,codebase不是指未打包的类文件的位置(浏览器不需要),而是指档案的位置。问题是,相对于JAR文件,您的HTML文件在哪里?例如,假设HTML文件位于父目录中。然后可以这样写:

<applet codebase="lib/" code="Test.class" height="80" width="300"
hspace="10" vspace="10" name="Test" archive="sMyJar.jar"></applet>


另外,我知道您提到这是一个测试,但是根据实际经验可以告诉您,在Java中使用默认包是一个非常糟糕的主意。我强烈建议您不要这样做。

07-25 23:57
查看更多