Java小程序并为不是Web服务器的PC设置例外

时间:2015-06-25 13:32:05

标签: java exception applet

我一直试图在netbeans之外的我的定位PC上运行一个时钟小程序,但是当我加载网页运行小程序时,我得到“Java安全应用程序阻止”。谷歌搜索我然后创建一个自签名证书思考,将解决问题。 我打开了一个命令窗口,将目录更改为jar和类所在的位置,并创建了密钥和证书。

cd C:\DEV\clock\classes
C:\Program Files\Java\jdk1.8.0_45\bin\keytool" -genkey -alias selfsigned -keyalg RSA -keysize 2048 -validity 365 -keystore  keystore.jks

Enter keystore password: <password>
Re-enter new password: <password>
What is your first and last name?
  [Unknown]:  PC129.aa.dfdd.nasa.gov (this is fake but matches the pattern I used)
Etc.

C:\DEV\NelsonsPrograms\clock\clock\classes>"C:\Program Files\Java\jdk1.8.0_45\bin\keytool" -selfcert -keystore keystore.jks -alias selfsigned -validity 3650

Enter keystore password: <password>

C:\DEV\NelsonsPrograms\clock\clock\classes>"C:\Program Files\Java\jdk1.8.0_45\bin\jarsigner" -keystore keystore.jks threeClock.jar selfsigned

Enter Passphrase for keystore: selfsigned
jar signed.

Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a times tamp, users may not be able to validate this jar after the signer certificate's expiration date (2025-06-21) or after any future revocation date.

我试图再次启动网页,但这次我得到了“应用程序被阻止”。您的安全设置已阻止自签名应用程序运行“。我再次用Google搜索,他们似乎基本上都说你需要为你的PC添加一个Java例外来运行applet。但是所有示例似乎都是www.foo.com示例,其中包含web / applet目录的完整路径名,域名或完整域名,它们似乎都是www或http地址。那么,对于不是Web服务器或具有www地址设置的PC,正确的输入是什么?我不认为我需要包含在异常名称中的applet目录的完整路径,因为我只在一个示例中看到过。

让我们说这是我的PC信息:PC129是主机名。网络:aa.dfdd.nasa.gov

那么异常名称应该是什么?

此处的SA不知道,因为它们总是为具有www网址的Web服务器添加例外。

3 个答案:

答案 0 :(得分:0)

SA终于来了,经过大量的组合,我们发现在java站点列表中添加以下异常将允许applet运行。

文件:/ C:/ DEV / NelsonsPrograms /时钟/时钟/类/

小程序和网页所在的位置需要完整路径名,否则小程序将被阻止。

答案 1 :(得分:0)

Correction, while the signed jar is running correctly, web pages that try to just run the XXX.class don't run. The applet is displaying the layout, but nothing is running in it. I think the local input file is being blocked so there is no data to display. So make a jar, self sign it, and run the jar from the web page.

答案 2 :(得分:0)

我通过Java控制面板 - 高级选项卡打开了java控制台,看看为什么aosClock.class版本在签名的clock.jar时没有工作,你可以看到它的安全性再次阻止了applet工作。它阻止小程序读取时钟时间数据。谷歌搜索似乎表明我必须在applet中插入授权代码,但由于签名的jar版本在我的PC上工作正常,我将使用它进行测试。在真实的Web服务器上运行时,我不想添加applet中不需要的额外内容。无论如何,jar方式似乎也是制作web applet的标准方式。

aosClock:Thread-14:强制垃圾收集...... 线程“Thread-14”中的异常java.security.AccessControlException:访问被拒绝(“java.io.FilePermission”“C:\ DEV \ NelsonsPrograms \ clock \ clock \ classes \ aqua_aos_times”“read”)     at java.security.AccessControlContext.checkPermission(Unknown Source)     at java.security.AccessController.checkPermission(Unknown Source)     在java.lang.SecurityManager.checkPermission(未知来源)     at sun.plugin2.applet.AWTAppletSecurityManager.checkPermission(Unknown Source)     在java.lang.SecurityManager.checkRead(未知来源)     在java.io.File.isDirectory(未知来源)     在sun.net.www.protocol.file.FileURLConnection.connect(未知来源)     在sun.net.www.protocol.file.FileURLConnection.initializeHeaders(未知来源)     at sun.net.www.protocol.file.FileURLConnection.getLastModified(Unknown Source)     在singleClock.run(aosClock.java:679)