MANIFEST.MF
打開Java的JAR檔案我們經常可以看到檔案中包含著一個META-INF目錄, 這個目錄下會有一些檔案,其中必有一個MANIFEST.MF,這個檔案描述了該Jar檔案的很多資訊,下面將詳細介紹MANIFEST.MF檔案的內容,
公共內容
- Manifest-Version 用來定義manifest檔案的版本,例如:Manifest-Version: 1.0
- Created-By 宣告該檔案的生成者,一般該屬性是由jar命令列工具生成的,例如:Created-By: Apache Ant 1.5.1
- Signature-Version 定義jar檔案的簽名版本
- Class-Path 應用程式或者類裝載器使用該值來構建內部的類搜索路徑
- Main-Class 定義jar檔案的入口類,該類必須是一個可執行的類,一旦定義了該屬性即可通過 java -jar x.jar來運行該jar檔案,
javaagent引數屬性
- Premain-Class: com.lind.hot.deploy.DemoJavaAgent 它相當于,當把這個jar當做-javaagent引數注冊當前類加載器時的入口,即如果你希望做一個javaagent包,需要添加這個屬性
DemoJavaAgent內容
注意:javaagent的執行是在當前專案的 main方法之前進行呼叫的,所以它總是用在
專案熱部署、專案加密等場景中,
public class DemoJavaAgent {
/**
* 該方法在main方法之前運行,與main方法運行在同一個JVM中
* 并被同一個System ClassLoader裝載
* 被統一的安全策略(security policy)和背景關系(context)管理
*
* @param agentOps
* @param inst
* @author SHANHY
* @create 2016年3月30日
*/
public static void premain(String agentOps, Instrumentation inst) {
System.out.println("====premain 方法執行");
System.out.println(agentOps);
}
/**
* 如果不存在 premain(String agentOps, Instrumentation inst)
* 則會執行 premain(String agentOps)
*
* @param agentOps
* @author SHANHY
* @create 2016年3月30日
*/
public static void premain(String agentOps) {
System.out.println("====premain方法執行2====");
System.out.println(agentOps);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/239872.html
標籤:Java
