【问题标题】:Embedding Java JApplet in HTML page when using Sockets使用套接字时在 HTML 页面中嵌入 Java JApplet
【发布时间】:2011-12-06 20:51:17
【问题描述】:

我在获取和 applet 以在 HTML 页面上工作时遇到问题。当我从小程序类中删除套接字连接并在 HTML 页面上测试小程序时,小程序会显示,但是当我将套接字连接添加回类文件时,小程序不会显示,并且 Java 控制台出现时没有堆栈跟踪。我确定这是一个安全原因,因为我使用的是套接字连接,所以我所做的是创建一个签名的 jar 文件并将其放在 applet 标记中,如下所示:

<APPLET codebase="classes" archive="captureaudio/AppletTest.jar" code="captureaudio/AppletTest.class" width=350 height=200></APPLET>

但是创建这个签名并没有奏效。

有人可以帮我吗?

更新

回应安德鲁·汤普森

  1. 没有提示我接受数字签名代码
  2. 我当前正在本地测试的小程序没有
  3. 是的,小程序正在尝试连接回服务器,服务器正在本地运行
  4. 我不确定 java 控制台没有显示任何异常。

我如何创建签名的 JAR 文件

我的 Applet 的命名空间是 captureaudio.AppletTest 类

在 cmd 提示符下,类文件所在的位置:

  1. 您需要使用 keytool.exe 在这里我找到了如何为小程序创建 jar 签名 www.xinotes.org/notes/note/434/

  2. jar -cf AppletTest.jar AppletTest.class

  3. >jarsigner AppletTest.jar MyCert 警告:此 jar 包含签名者证书将在六个月内过期的条目

4.>jarsigner -verify -verbose -certs AppletTest.jar

s k 153 Thu Oct 13 11:28:38 BST 2011 META-INF/MANIFEST.MF

  X.509, CN=xxxxx, OU=None, O=None, L=xxxxx, ST=xxxxx, C=GB (myce

rt) [证书将于 2012 年 10 月 1 日 20:55 到期]

     315 Thu Oct 13 11:28:40 BST 2011 META-INF/MYCERT.SF
    1352 Thu Oct 13 11:28:40 BST 2011 META-INF/MYCERT.RSA
       0 Thu Oct 13 11:28:10 BST 2011 META-INF/

smk 11015 Thu Oct 13 10:49:08 BST 2011 AppletTest.class

  X.509, CN=xxxxxx, OU=None, O=None, L=xxxxxxxx, ST=xxxxx, C=GB (myce

rt) [证书将于 2012 年 10 月 1 日 20:55 到期]

s = 签名已验证 m = 条目在清单中列出 k = 在密钥库中至少找到一个证书 i = 在身份范围内找到至少一个证书

jar 已验证。

JAVA 控制台

Java 插件 10.0.0.147 使用 JRE 版本 1.7.0-b147 Java HotSpot(TM) 客户端虚拟机

用户主目录 = C:\Users\xxxxxxx

c: 清除控制台窗口 f:在终结队列中终结对象 g:垃圾收集 h:显示此帮助信息 l:转储类加载器列表 m:打印内存使用情况 o:触发日志记录 问:隐藏控制台 r:重载策略配置 s:转储系统和部署属性 t:转储线程列表 v: 转储线程堆栈 x: 清除类加载器缓存

0-5:将跟踪级别设置为

从引导类路径中检测到:C:\PROGRA~1\Java\jre7\lib\deploy.jar

更新

文件夹位置

 web root> 
------AppletTest.jar
------classes>
-----------captureaudio>
---------------------AppletTest.class    

【问题讨论】:

  • 1) 系统是否提示您接受数字签名代码? 2) 小程序是否可供我们访问? 3) 小程序是否试图连接回服务器或其他地方? 4) 代码是否吞食异常?
  • @AndrewThompson,感谢您的回复,我已经更新了详细信息。
  • 1) 如果没有提示您接受代码,则 JRE 不会认为它已签名。 2)可惜,这有时有助于调试。 3) 小程序不需要对“电话回家”的扩展权限。如果您在这种情况下需要权限,则小程序可能会错误地形成地址。 4)这并没有具体回答我的问题。 5) 很好地明确解决每个问题。
  • @AndrewThompson,您好,我再次更新了详细信息,这与签署小程序有关,希望这会有所帮助,可以试一试,我可能错误地签署了小程序。
  • 您的 JarSigner -verify 输出似乎表明它已签名确定。很奇怪你没有被提示。您可以在另一台机器上尝试并报告行为吗?输出中的那些 X 是为了隐私而编辑的吗?

标签: java html sockets japplet


【解决方案1】:

使用 Java 网络启动协议 (JNLP)。这是分发小程序的正确方法。是的,它必须经过签名才能访问套接字功能。

http://en.wikipedia.org/wiki/Java_Web_Start#Java_Network_Launching_Protocol_.28JNLP.29 http://www.oracle.com/technetwork/articles/javase/jnlp-142088.html

【讨论】:

    猜你喜欢
    • 2019-02-09
    • 1970-01-01
    • 2015-12-22
    • 2016-11-10
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2016-06-28
    相关资源
    最近更新 更多