我用Eclipse开发了一个小程序java,它包含在MyPage.html中。我调用一个Web服务并得到响应。它在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文件,我把它放在了文件夹库中。我有一个小程序的类,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服务,并编写了一个非常简单的代码,它也不会改变任何东西——除了代码有效(例如显示"你好世界")。
我在论坛上看到过类似的问题:[http://stackoverflow.com/questions/908748/how-do-i-sign-a-java-applet-for-use-in-a-browser][1] :他似乎也有同样的问题,并解决了这个问题。他说:"问题是我的jar文件的编译方式与我引用类文件的方式不同"。但我不知道如何改变这一点,也不知道这是否是原因(我是Java的初学者)。
我应该把证书文件放在一个特定的文件夹里吗?
非常感谢你的帮助。
使用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中使用默认包是一个非常糟糕的主意。我强烈建议你不要那样做。