试图让一个签名的小程序在浏览器中工作,但失败了

时间:2009-12-27 08:54:46

标签: java applet signed

我创建了一个使用两个外部库(JENAJUNG)的JApplet。当我从IDE(使用eclipse)运行applet时,applet正常工作。我创建了一个jar文件,签名(因为applet需要从磁盘读取文本),创建了一个HTML页面来保存applet,但是当我尝试在Web浏览器中运行它时,我得到了java安全警告对话框,当我按下运行整个浏览器选项卡似乎挂起。

这是我写的HTML文件:

<html>
   <head>
      <title>Ontology Application</title>
   </head>
   <body>
      <applet code="assignment.Launcher.class" width="1000" height="800" archive="test.jar"></applet>
   </body>
</html>

Launcher类包含init,start,stop和destroy方法,项目中使用的所有类都存储在赋值包中。 test.jar是已签名的jar文件,它与HTML文件放在同一个文件夹中。

我按照此主题中的步骤创建了我的私钥/公钥,证书并签署了jar文件: How to sign and applet (and get it to work)

我有一个关于整个过程的问题清单,因为我不确定几个步骤。

问题1:我使用eclipse创建了jar文件(右键单击项目 - &gt; export - &gt; JAR文件)并保留了默认设置。生成的jar文件是否包含我导入项目的引用库?如果答案是否定的,我如何在jar文件中包含引用的库?

问题2:如果双击它,生成的jar文件应该运行吗?因为它没有运行 (我认为它不起作用,因为没有指定主类,因为applet没有主方法,但我有待纠正)

问题3:由于我在applet中使用外部库,我是否需要对所有导入的jar文件进行数字签名才能使applet正常工作?或签署主jar文件(包含我的类)就足够了吗?

问题4:如果有一天我设法让applet在浏览器中运行,那么每次应用程序尝试从磁盘读取文本时都会弹出java安全警告对话框吗?或小程序加载时安全警告对话框只显示一次?

提前致谢,并且抱歉在一个帖子中提出大量问题,但是它们与主题密切相关:)

1 个答案:

答案 0 :(得分:4)

  1. 您应该在HTML中的applet声明中使用<PARAM NAME="archive" VALUE='applet.jar, external1.jar, external2.jar'>。您也可以尝试将Class-Path添加到主jar的MANIFEST.MF(请参阅here
  2. 否。除非您在Main-Class
  3. 中指定了MANIFEST.MF
  4. 是的,以防外部罐子做一些安全敏感的操作(比如读/写文件系统)
  5. 没有