JAR 包密封(Sealed)
程序员文章站
2022-05-04 19:24:27
...
包密封
包密封是指在生成JAR文件的时候,可以选择对JAR文件中的一个包进行密封。对JAR文件中的一个包进行密封是指这个包中定义的所有类都必须出自同一个JAR文件,否则JVM会抛出SecurityException。
用白话就是将项目打成JAR文件,其项目中引用的同名类都必须来自同一个引用包,否则JVM会抛出SecurityException。
包密封可以在版本中强制实现一致性。
包密封的MANIFEST.MF文件
Name: javax/servlet/internal/
Sealed: true
Sealed=true,表示指定当前JAR文件为包密封;
Name=javax/servlet/internal/,表示对javax.servlet.internal包是密封的。
Name属性为可选属性,如果没有Name属性表示整个JAR文件中所有的包都是密封的。
举例说明
假如sealed jar中有个名为equals的方法并且包名为com.demo.sealed。
此时在sample中也有一个名为equals并且包名也为com.demo.sealed
package com.demo.sealed;
public boolean equals(String param){
// TODO
}
在MANIFEST.MF指定Sealed: true的情况下对sample进行打包后,会默认使用来自同一个包下equals方法。