我在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.
答案 0 :(得分:1)
确定“未找到课程”应该与签名无关。我认为jar文件与html文件位于同一目录中?
列出多个档案的方式可能存在问题。您可以尝试以下方法:
,
,只留下空格。,
或:
替换;
(包括空格)。Class-Path
属性,列出其他两个归档,用空格分隔。将该文件用作archive=
参数。Class-Path
属性中的另一个,并仅列出archive=
参数中的那个。它也就像你构建yor jar文件的方式一样,所有的类文件都放在文件的根目录下,没有内部目录结构。 jar文件中的目录结构必须与类的包结构相匹配,即源代码中的package
行,以及code=
标记的applet
参数。
要在jar文件中创建目录结构,请将目录更改为C:\Users\lucas\workspace\applet-chave\bin
,然后执行jar cvf C:\Users\lucas\desktop\AbrirAplicativo.jar com
以将整个目录com
添加到存档。
答案 1 :(得分:0)
您在FormMain
页面的某个位置指定.html
时应指定的内容为com.griaule.fingerprintsdk.appletsample.FormMain
您在问题中提出的所有签名内容与ClassNotFoundException
无关。
我不确定您是否正确构建.jar
,它可能包括您的用户路径以及.jar
中的Eclipse工作目录。最好花时间设置Maven来构建.jar
或者至少使用Eclipse中内置的工具来导出.jar
,这样你就可以确定它是正确构建的。手工操作可以解决各种错误。