- 浏览: 55626 次
- 性别:
- 来自: 杭州
最新评论
一般以下两种情况会触发sealing安全异常
1)当被密封(seal)的package已经被加载,此时再试图去加载其他jar中的同名package,就会触发sealing violation异常
2)当没有被密封的package已经被加载,此时再去加载其他jar中同名且被密封的package,也会触发sealing violation异常
假设某次发布的jar(v1.jar)中包含NumerUtils和StringUtils这俩工具类
一段时间后,需要对该v1.jar进行升级,加入一个新的工具类DateUtils.java
同样的,采用上面的步骤进行编译、打包得到v2.jar
1)当被密封(seal)的package已经被加载,此时再试图去加载其他jar中的同名package,就会触发sealing violation异常
2)当没有被密封的package已经被加载,此时再去加载其他jar中同名且被密封的package,也会触发sealing violation异常
假设某次发布的jar(v1.jar)中包含NumerUtils和StringUtils这俩工具类
package com.seal.util; import java.text.DecimalFormat; public class NumberUtils { public static String format(double d) { return new DecimalFormat("#,##0.00").format(d); } }
package com.seal.util; public class StringUtils { public static String format(String str) { return "Format:" + str; } }
/** javac -d v1 NumberUtils.java StringUtils.java 编译源文件至v1目录,多个源文件用空格分隔 jar -cvfm v1.jar mf.mf -C v1 . 将v1目录下的所有子目录和文件都压缩成jar文件, jar文件的MANIFEST.MF采用自己定义的mf.mf mf.mf内容如下: Manifest-Version: 1.0 Created-By: 1.6.0_33 (Sun Microsystems Inc.) Name: com/seal/util/ Sealed: true */
一段时间后,需要对该v1.jar进行升级,加入一个新的工具类DateUtils.java
同样的,采用上面的步骤进行编译、打包得到v2.jar
package com.seal.util; import java.util.Date; import java.text.SimpleDateFormat; public class DateUtils { public static String format(Date date) { return new SimpleDateFormat("yyyy-MM-dd").format(date); } }
import com.seal.util.NumberUtils; import com.seal.util.StringUtils; import com.seal.util.DateUtils; public class MainTest { public static void main(String[] args) { System.out.println(NumberUtils.format(1.2)); System.out.println(StringUtils.format("str")); System.out.println(DateUtils.format(new java.util.Date())); } }
/** javac -cp v1.jar;v2.jar MainTest.java 编译MainTest源文件 java -cp .;v1.jar;v2.jar MainTest 运行MainTest 此时classpath同时包含v1.jar跟v2.jar 因为jvm加载package的顺序是根据jar在classpath出现的先后顺便来进行的,所以此时先从v1.jar加载了seal的com.seal.util,但是DateUtils需要从v2.jar获得,所以就会触发sealing violation安全异常 Exception in thread "main" java.lang.SecurityException: sealing violation: packa ge com.seal.util is sealed at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at MainTest.main(MainTest.java:10) 相反的,如果一开始加载的v1的package不是seal的,要从v2加载seal的同名package就会触发另一个sealing violation安全异常 Exception in thread "main" java.lang.SecurityException: sealing violation: can't seal package com.seal.util: already loaded at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at MainTest.main(MainTest.java:10) */
发表评论
-
redis安装(windows.exe)
2014-05-21 22:54 740https://github.com/rgl/redis ... -
rabbitMQ安装(windows下)
2014-05-21 22:41 655进入项目下载主页面http://www.rabbitmq.co ... -
实现单线程的断点下载
2014-04-16 09:43 843/** * 实现单线程的断点下载 */ publ ... -
实现一个简易的http模拟器
2014-04-15 15:20 1800/** * http模拟器 * 模拟发送http请求和 ... -
xml学习鉴定
2014-04-09 23:33 842实现招生录取系统中的 ... -
xml学习
2014-04-08 22:47 1474XML:Extensible Markup Langu ... -
HTTP断点续传
2014-03-31 22:13 793http://fenglingcorp.iteye.com/b ... -
java多线程-线程状态转换
2014-03-01 09:20 7971. 新建(new):新创建了一个线程对象。 2. 可 ... -
apt处理自定义annotation
2014-02-19 23:20 1024package annotations; import ... -
跳过UTF-8的BOM
2014-02-14 12:19 1503/** version: 1.1 / 2007-01-25 ... -
java reference
2014-02-09 00:36 678import java.lang.ref.PhantomR ... -
不带头结点的单链表面试汇总
2014-01-24 13:47 1497import java.io.ByteArrayInputSt ... -
带头节点的单链表面试题汇总
2014-01-23 15:12 1031import java.io.ByteArrayInput ... -
单链表面试题之-链表反转
2014-01-15 22:43 1102单链表反转 -------------------- ... -
java单链表-带头结点和不带头结点单链表的简单实现
2014-01-14 23:41 4932带头结点的单链表实现 public class LinkedL ... -
ClassLoader
2013-11-08 15:57 909public class ClassLoaderTest { ... -
URL和URI
2013-11-08 13:48 514private static void getData ... -
i++和++i
2013-11-06 15:26 525// i = i++ 计算过程 // temp = i; ... -
java 继承 多态
2013-11-06 15:19 802/** 运行结果: A's constructor co ... -
hashmap分析
2013-10-30 15:20 693/** hashmap底层维护着一个entry数组,每 ...
相关推荐
BS EN 16119-2021 LPG equipment and accessories. Sealing caps and plugs for LPG cylinder and pressure vessel valves.pdf
BS EN 16119-2021 LPG equipment and accessories. Sealing caps and plugs for LPG cylinder and pressure vessel valves.pdf
API STD 614-2022 LUBRICATION ,Shaft-sealing,and Oil-control systems and auxiliaries.pdf
##### 封存(Sealing) 除了证明之外,Intel® SGX还提供了“封存”功能,这是一种允许容器内的软件将其秘密信息加密后保存到非易失性存储器中的机制。这些秘密信息可能包括密钥、认证令牌或其他敏感数据。封存后的...
《AB PLC控制双按钮手动封口机程序解析》 在工业自动化领域,PLC(可编程逻辑控制器)扮演着至关重要的角色,它以其强大的逻辑控制能力和灵活的编程特性被广泛应用于各种设备的控制系统中。本资料主要探讨的是使用...
### 密封技术在芯片板级保护中的应用与可靠性研究 #### 概述 本文源自IEEE,主要探讨了密封技术(SealedChip-on-board, SCOB)在数字、模拟及微波电路保护中的应用与发展。文章由Hughes Aircraft Company的研究人员...
2014最新文件压缩器,进行完美加密数据,不解压无法查看被压缩的文件, 可以解压使用该软件压缩的.sp压缩包.
固体氧化物燃料电池封接玻璃中的Cr(VI)形成,张腾,Richard K. Brow,固体氧化物燃料电池的玻璃陶瓷封接材料与含铬铁素体型连接体之间的高温反应导致有害相如BaCrO或者SrCrO4的生成,从而引起电池的机械�
### MIL-PRF-23586F:电气用硅橡胶密封化合物规范 #### 一、概述 MIL-PRF-23586F是一项美国军方标准,规定了非燃油抗性的电气用硅橡胶密封化合物的技术要求与性能指标。这类化合物主要应用于-62至+204°C(-80至+...
很抱歉,但根据您给出的信息,"THE FALSE COLLAR" 和 "adfadf" 并不是明确的IT知识点,也没有提供任何与技术、编程、软件或硬件相关的上下文。因此,无法生成符合要求的IT专业知识文章。如果可以,请提供更具体、与...
* 产品类型:SMD SEAM SEALING CXO 3.2 × 2.5 *Nominal Freq.:24.000000MHz * 产品编号:7X24000007 * 版本号:A1 同时,datasheet还介绍了TXC公司的绿色产品标准,该标准基于国际标准,并在TXC的网站上公布和...
Sealing clay text segmentation based on radon-like features and adaptive enhancement filters
中温固体氧化物燃料电池封接玻璃的结构与封接性能:TiO2含量对TiO2-CaO-SrO-B2O3-SiO2玻璃体系的影响,张腾,陈嘉琳,本文中,TiO2作为CaO-SrO-B2O3-SiO2玻璃体系的形核添加剂,通过改变体系的结晶过程来调整微晶...
The effect of Kovar alloy oxidized in simulated field atmosphere on its sealing with glass was studied in this article. After Kovar plates and pins were preoxidized in N2 with 0°C, 10°C and 20°C ...
Lotus 公式秘籍是开发 Lotus 应用程序时的重要参考,主要涵盖了如何高效地使用 Lotus 公式语言来操作用户环境、数据库、视图以及文档。以下是对这些知识点的详细说明: 1. **用户环境**: - 用户环境包含了数据库...
GMW 15058-2010 Polyurethane Foam for Trim Pads, Headliners, Sealing and Insulators.pdf
The requirements of sealing for optical windows and laser cavity mirrors are briefly discussed in this paper and several sealing techniques in existence are compared.A technique of direct glass ...
ISO11607 最终灭菌医疗器械的包装(第2部分)Part 2: Validation requirements for forming, sealing and assembly processes