普通java項目打jar包運行以及 jar包中class文件替換


1、普通java項目打jar包運行
    1.1、新建一個java項目,必須有main方法,sys的打印目錄重定向到到外部文件
    1.2、把項目到出成jar,如果Launch configuration 選不到要執行的main方法類,就先執行一下main方法
    1.3、運行jar文件
2、jar包中class文件替換

 

1、普通java項目打jar包運行    <--返回目錄

轉載於:https://my.oschina.net/ThreeTiger/blog/2049719

1.1、新建一個java項目,必須有main方法,sys的打印目錄重定向到到外部文件

public class Main {
 
    public static void main(String[] args) throws FileNotFoundException {
        File test = new File("log.txt");
        PrintStream out = new PrintStream(new FileOutputStream(test));
        
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                System.setOut(out);
                System.out.println("hello world!"+new Date());
            }
        }, 1000, 1000);
 
    }
 
}

 

1.2、把項目到出成jar,如果Launch configuration 選不到要執行的main方法類,就先執行一下main方法

4aa07997a2ffbc55a6bf5faa22b0a20eb8b.jpg

59afd8ec1349e3fa241af8c5ef3a56827ee.jpg

 

1.3、運行jar文件

方法一:打開cmd界面后輸入java -jar ***.jar 就可以運行,並且可以看到jar同級目錄生成了log.text日志文檔,關掉命令行框,程序終止

ce78132d7ffb2f913eba641bb3160fc8a1e.jpg

97f380e96a5f9fc3ec6d0005a307b367d11.jpg

 

方法二:新建bat命令運行工具,雙擊運行,關閉程序需要在進程里殺掉

@echo off
 
start javaw -jar tdemo.jar
 
exit

4a5970da3203fea4f12614b1188ff3d5a93.jpg

5c476f901fc8f7a0c70cb81778885d50199.jpg

 

2、 jar包中class文件替換    <--返回目錄

public class Demo01 {

    public static void main(String[] args) {
        fun1();
    }
    
    public static int fun1() {
        int num = 1;
        System.out.println("fun1()返回" + num);
        return num;
    }

}

  把上面Demo項目exprot為jar包。運行結果:

 

  修改 com.oy.test.Demo01 類 num=2,編譯后復制 com.oy.test.Demo01.class 到與 aaa.jar 同一目錄。

  當然也可以復制 com.oy.test.Demo01.java 到 aaa.jar 同一目錄后使用javac進行編譯。

 

  使用 jar -uvf aaa.jar com,將 com 目錄里面所有 class文件 替換到 aaa.jar。注意 com 目錄層級要與 aaa.jar 要被替換的 class 的目錄層級保持一致。

 

  另外,需要注意的是,com 目錄的所有文件,在 aaa.jar 找到對應的文件則替換,沒有找到則添加。

 

 參考:Jar包中Class文件替換


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM