0

我在 HTML 页面中有以下代码

        <applet code="com.griaule.fingerprintsdk.appletsample.FormMain"
            archive="SignedFingerprintSDKJava.jar, AbrirAplicativoAssinado.jar"
            width="515" height="560">
        </applet>

当我运行我的 html 页面时,出现一条错误消息,"ClassNotFoundException, FormMain.class"

我运行 jarscan 并在我的 jar 文件中找到了 FormMain 类。

发生了什么 ?

这就是我生成 jar 文件的方式

jar cvf C:\Users\lucas\desktop\AbrirAplicativo.jar C:\Users\lucas\workspace\applet-chave\bin\com\griaule\fingerprintsdk\appletsample\AppletInstaller.class C:\Users\lucas\workspace\applet-chave\bin\com\griaule\fingerprintsdk\appletsample\ColorPane.class C:\Users\lucas\workspace\applet-chave\bin\com\griaule\fingerprintsdk\appletsample\FormMain.class C:\Users\lucas\workspace\applet-chave\bin\com\griaule\fingerprintsdk\appletsample\FormOptions.class C:\Users\lucas\workspace\applet-chave\bin\com\griaule\fingerprintsdk\appletsample\Util.class 

生成密钥

keytool -genkey -dname "cn=AbrirAplicativoApplet, ou=XXX, o=XXX, l=São Paulo, s=SP c=BR" -alias AbrirAplicativoAppletKey -keystore C:\ChaveAbrirAplicativoApplet -storepass 123456 -validity 7300

分配 Jar 文件

jarsigner -keystore C:\users\lucas\desktop\ChaveAbrirAplicativoApplet -storepass 123456 -signedjar "C:\Users\lucas\Desktop\AbrirAplicativoAssinado.jar" "C:\Users\lucas\Desktop\AbrirAplicativo.jar" AbrirAplicativoAppletKey

出口证书

keytool -export -keystore C:\users\lucas\desktop\ChaveAbrirAplicativoApplet -alias AbrirAplicativoAppletKey -file C:\users\lucas\desktop\CertificadoAbrirAplicativoApplet.x509

验证分配

keytool -import -alias AbrirAplicativoAppletKey -file C:\CHAVES\CertificadoAbrirAplicativoApplet.x509

也许我的问题出在PolicyTool

当我尝试输入新的策略条目时,出现以下错误

java.net.MalformedURLException: no protocol: AbrirAplicativoAssinado.jar

但是,如果我的 jar 文件在我的桌面上,我怎么能在这个字段中输入一个 URL?

我尝试放置http://localhost/AbrirAplicativoAssinado.jar但出现新错误

There is not a public key for the alias AbrirAplicativoAppletKey.
4

2 回答 2

1

好的,“找不到类”应该与签名无关。我认为 jar 文件与 html 文件位于同一目录中?

您列出多个档案的方式可能存在问题。您可以尝试以下方法:

  • ,从存档列表中省略,只留下空格。
  • 用或替换,(包括空格)。:;
  • 创建一个仅包含清单的 jar 文件,并在该清单中添加一个Class-Path列出其他两个档案的属性,以空格分隔。使用该文件作为archive=参数。
  • 修改您的 jar 文件之一以在Class-Path其清单的属性中引用另一个,并仅在archive=参数中列出该文件。

它也看起来好像你构建你的jar文件的方式,所有的类文件都会放在文件的根目录中,没有内部目录结构。jar 文件中的目录结构必须与类的包结构相匹配,即package源代码中的行,以及标签的code=参数。applet

为了在您的 jar 文件中创建目录结构,请将目录更改为C:\Users\lucas\workspace\applet-chave\bin,然后执行jar cvf C:\Users\lucas\desktop\AbrirAplicativo.jar com将整个目录添加com到存档中。

于 2012-07-19T14:02:36.217 回答
0

当您应该指定的内容FormMain.htmlcom.griaule.fingerprintsdk.appletsample.FormMain

您在问题中提出的所有签名内容都与ClassNotFoundException.

我也不确定您是否.jar正确构建,它可能包括您的用户路径以及.jar. 最好花时间设置 Maven 来构建,.jar或者至少使用 Eclipse 中内置的工具来导出.jar. 手工操作容易犯各种错误。

于 2012-07-19T14:02:09.603 回答