日期:2014-05-17  浏览次数:20809 次

JAVA applet jar包签名后不能运行
本人是java applet新手,但是由于工作需要接触了applet 数字签名。并且遇到了下面的问题,希望各位能帮忙解答一下。

//源码档HelloWorld.java

import java.applet .*;
import
java.awt.*;
public class
HelloWorld
extends Applet 
{
public void 
paint(Graphics g)
{
g.drawString ("你好,Java世界!",2,20);

}

javac *.java  //编译.java得到HelloWorld.class 在没数字签名前可以运行在网页中
jar cfv hello.jar HelloWorld.class //打包 jar 成功

"c:\java\jdk\jarsigner" -keystore f:\applet\testKey hello.jar test //签名也是成功的
//由testKey产生的证书也已经成功导入信任库中了
//html 档
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=GB2312">
<title>
HTMLTestPage
</title>
</head>
<body>
<href>
<applet
archive="hello.jar"   
code = "HelloWorld.class"
codebase=""  
name="Hello"
width="300"
height="200">
</applet>
</body>
</html>

在本地机子上就出现了,不能显示“你好,Java世界”错误。

java 控制台输出的log如下:

basic: Dialog type is not candidate for embedding
security: 使用者僅對此階段作業的程式碼授予權限
security: 正在部署階段作業憑證儲存庫中儲存憑證
security: 已在部署階段作業憑證儲存庫中儲存憑證
network: 找不到快取項目 [url: file:/F:/applet/helloworld/hello.jar,版本: null]
network: 找不到快取項目 [url: file:/F:/applet/helloworld/hello.jar,版本: null]
network: 找不到快取項目 [url: file:/F:/applet/helloworld/hello.jar,版本: null]
network: 找不到快取項目 [url: file:/F:/applet/helloworld/hello.jar,版本: null]
security: 使用 CertPath API 驗證憑證鏈
basic: Plugin2ClassLoader.getPermissions CeilingPolicy allPerms
security: SHA-256Certificate finger print: F0C2968F49F2AAB1986702E0F65199F26E447FDEEACBB2E20763A8E7BA00C3B6
security: 正在檢查憑證是否在 Internet Explorer DISALLOWED 憑證儲存庫中
security: 正在檢查憑證是否在 Internet Explorer TrustedPublisher 憑證儲存庫中
network: 找不到快取項目 [url: file:/F:/applet/helloworld/hello.jar,版本: null]
basic: 異常狀況: java.lang.reflect.InvocationTargetException
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at sun.plugin2.applet.Plugin2ClassLoader.defineClassHelper(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.access$100(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.appl