Jar文件及MANIFEST.MF 文件入门
?
前言? ? ?在看Btrace相关源代码的时,才认识到MANIFEST.MF是有很大用途的,以前对jar文件没多大了解,现在有空也整理下相关的资料。Manifest-Version: manifest的版本Created-By: java 实现版本,一般由jar工具生成。Class-Path : 扩展包的路径,主要为绝对路径或者相对路径,当指定该参数时,可以不设置classpath也能找到该扩展包Main-Class : main方法类?安全相关
Sealed : 指定jar是否封闭,如果为true,则不能jar包中的类不能访问其他包的类。可以指定特定的包?例如:
Manifest-Version: 1.0Created-By: 1.2 (Sun Microsystems Inc.)Sealed: true?Name: foo/bar/Sealed: false这样指的是除了foo.bar包以外的类,都被封闭。
Premain-Class : 如果 JVM 启动时指定了代理,那么此属性指定代理类,即包含 premain 方法的类。如果 JVM 启动时指定了代理,那么此属性是必需的。如果该属性不存在,那么 JVM 将中止。注:此属性是类名,不是文件名或路径。 Agent-Class : 如果实现支持 VM 启动之后某一时刻启动代理的机制,那么此属性指定代理类。 即包含 agentmain 方法的类。 此属性是必需的,如果不存在,代理将无法启动。 注:这是类名,而不是文件名或路径。 Boot-Class-Path: 由引导类加载器搜索的路径列表。路径表示目录或库(在许多平台上通常作为 JAR 或 zip 库被引用)。查找类的特定于平台的机制失败后,引导类加载器会搜索这些路径。按列出的顺序搜索路径。列表中的路径由一个或多个空格分开。路径使用分层 URI 的路径组件语法。如果该路径以斜杠字符(“/”)开头,则为绝对路径,否则为相对路径。相对路径根据代理 JAR 文件的绝对路径解析。忽略格式不正确的路径和不存在的路径。如果代理是在 VM 启动之后某一时刻启动的,则忽略不表示 JAR 文件的路径。此属性是可选的。 Can-Redefine-Classes : 布尔值(true 或 false,与大小写无关)。是否能重定义此代理所需的类。true 以外的值均被视为 false。此属性是可选的,默认值为 false。 Can-Retransform-Classes: 布尔值(true 或 false,与大小写无关)。是否能重转换此代理所需的类。true 以外的值均被视为 false。此属性是可选的,默认值为 false。 Can-Set-Native-Method-Prefix: 布尔值(true 或 false,与大小写无关)。是否能设置此代理所需的本机方法前缀。true 以外的值均被视为 false。此属性是可选的,默认值为 false。?? ? ?代理 JAR 文件在清单中可以同时出现 Premain-Class 和 Agent-Class 属性。如果代理是使用 -javaagent 选项在命令行上启动的,那么 Premain-Class 属性指定代理类的名称,Agent-Class 属性将被忽略。类似地,如果代理是在 VM 启动后某一时刻启动的,那么 Agent-Class 属性指定代理类的名称(Premain-Class 属性的值将被忽略)。?