好久没更新博客了!
最近,由于项目要求,需要将swing开发的一个桌面程序转换为Applet并嵌入到web中。转换工作很快就完成了,但是在嵌入到web以后,每次访问applet都会弹出一个警告对话框,大体的意思说是applet包含了不受信的代码,提示你是否要阻止运行,如果不细看提示,很容易就点击了是,结果applet就不会运行了。
通过看对话框中的提示,对applet中的所有jar都进行了签名,再次访问还是出现了警告对话框,再看,发现提示说applet中包含了签名和未签名的代码(资源)。我们知道java的签名只会对jar包中的class进行签名,而不会对其中的资源文件进行签名,这就导致为什么签名了还是会出现警告。于是到oracle官网去寻找答案,找到以下有用的链接:http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/mixed_code.html
这篇文章里面提到了两种方法,分别是针对用户和开发人员(或者部署人员的)。最终用户可以通过修改控制面板中java的设置来处理applet如何运行混合的代码。另一种针对开发人员的方式就是修改jar包中的清单文件(manifest )配置,可以通过设置两个属性Trusted-Only属性和Trusted-Library属性来控制applet在浏览器的运行。
其中Trusted-Only针对那些不需要不受信控件的applet或application,设置了Trusted-Only不会去加载不受信的classes或者资源。
而相对应的Trusted-Library就是允许applet或application使用那些不受信的控件,同时不会弹出警告对话框。Trusted-Library会阻止受信任的组件去使用不受信任的组件。
通过上面的这些信息,已经找到了去掉对话框的办法了,那就是修改applet使用到的所有jar包的manifest文件,添加Trusted-Library属性,然后再签名。
问题:在上面的过程中,遇到一个问题就是一个第三方的jar已经签名了,这个时候你修改了它的manifest文件,然后再签名就会报错,签名失败。这时可以删除META-INF目录中的.DSA和.SF文件,然后把MANIFEST.MF中的签名信息手动删掉,再次签名即可。
MANIFEST.MF中的签名信息格式如下:
Name: resources/language/lang.xml
SHA1-Digest: vC76jNzoYHDH4JE/oV+/gp92F9o=
至此问题解决。
相关推荐
网页中的Java Applet是一种在浏览器上运行的小型Java应用程序,常用于实现特定的功能,比如本例中的RFID(射频识别)电子标签的读写。Java Applet串口通信允许Applet与本地计算机的硬件设备进行交互,如通过串行端口...
- 当Applet尝试打开对话框时,浏览器通常会显示警告信息,提示用户潜在的风险。 - 通过数字签名,Applet可以获得更多的权限,例如读写本地文件,但这需要用户明确的许可。 **Applet图形的显示和刷新**: - `paint()...
Java Applet小程序是一种早期的Java技术,用于在Web浏览器中执行客户端的Java代码。它允许开发者创建交互式、动态的Web应用。然而,由于安全原因,Applet需要经过严格的验证和安全控制,其中最重要的就是数字签名和...
在IT行业中,Applet是一种基于Java的小程序,它可以在网页中运行,提供各种交互功能。本主题关注的是如何使用Applet来实现一个自动化文件下载功能,即从服务器上下载文件到客户端,而且这个过程无需用户手动操作弹出...
5. **用户交互**:在浏览器中运行Applet时,由于权限提升,浏览器可能会弹出警告对话框,询问用户是否信任这个Applet并给予额外权限。用户只有确认后,Applet才能获得所需的权限。 6. **安全注意事项**:虽然权限...
用户在弹出的安全警告对话框中确认后,Applet才能执行相应操作。 4. **实例分析** - **创建Applet**:编写一个简单的Applet,用于下载服务器上的文件到本地。 - **实现下载逻辑**:使用`java.net.URL`和`java.io`...
Applet是在Web浏览器中运行的小型Java程序。理解其初始化、启动、绘画、停止和销毁等生命周期阶段对于编写有效的Applet非常重要。 10. **向Applet传递参数**: 开发者可以通过HTML页面向Applet传递参数,这使得...
8. **Swing Applet**:了解如何在Web浏览器中使用Swing组件创建Applet,尽管现在Applet已逐渐被淘汰,但了解其工作原理对理解Java Web编程有帮助。 9. **多线程**:Swing应用程序通常在Event Dispatch Thread(EDT)...
在JavaScript中,`window`对象代表浏览器的窗口,提供了与用户交互的各种方法和属性,如`alert()`用于弹出警告对话框,`location`属性用于获取或更改当前页面的URL。`document`对象则用于操作HTML文档,如`...
这个程序会在页面加载时依次显示三个警告对话框。 随着技术的发展,JavaScript已经不再局限于浏览器环境,Node.js的出现使得JavaScript也能在服务器端运行。如今,JavaScript是Web开发不可或缺的一部分,用于前端...
Applets是一种特殊的Java应用程序,设计用于嵌入到网页中并通过浏览器运行。它们通常用于提供动态内容和用户交互功能。 - **传递参数给Applet**:可以通过HTML页面向Applet传递参数。 - **动画**:Applets支持创建...
Swing 中的 `JFrame`、`JDialog`、`JWindow` 都是这些类的扩展,而 `JApplet` 是 `java.applet.Applet` 的扩展,用于在浏览器中运行。 Swing 为了实现平台独立性,引入了轻量级组件(Lightweight Components),...
- **Java Applet**:这是一种在浏览器内运行的小应用程序,但随着现代Web技术的发展(如HTML5),Java Applet的使用已大大减少。 - **Swing组件**:这是Java中的一个图形用户界面(GUI)工具包,用于创建桌面应用...
6. **跨平台性**:由于JavaScript运行在浏览器中,所以它天生具有跨平台的特性,可以在多种操作系统和浏览器上运行。 JavaScript与Java的区别主要在于: 1. **开发公司**:JavaScript由Netscape开发,Java由SUN ...
1.3.2 在MyEclipse 8.5中创建、运行、调试和管理Java项目 1.4 小结 第2章 Java面向对象编程 2.1 面向对象的一些概念 2.1.1 面向对象涉及的概念 2.1.2 类和对象 2.2 面向对象的一些特性 2.2.1 继承特性 2.2.2 多态...
- **Applet**:Java小程序,可以在Web浏览器中运行。 3. **LayoutManager类** - **FlowLayout**:组件按顺序排列。 - **BorderLayout**:组件按照东、南、西、北、中心五个位置排列。 - **GridLayout**:将容器...
- Applet:虽然现在使用较少,但早期Java用于在网页中嵌入小程序,实现交互功能。 - JavaServer Pages (JSP):与Servlet结合,用于服务器端动态生成HTML,提供更复杂的数据处理能力。 - Java框架:如Spring MVC、...
Java Applet是一种独立于网页运行的小程序,需要预先编译并在浏览器中以插件形式执行,拥有更广泛的系统访问权限,而JavaScript是直接嵌入HTML文档中,由浏览器实时解析执行,不涉及独立窗口,且源代码对用户可见,...