手動執行java命令的四種方法總結(類,jar包的手動執行)

1.最常用的一種方式:java 全限定名

//源代碼:

package com.zizhu;

public class Hello {
	
	public static void main(String args[]){
		System.out.println("Hello,World!! java command");
	}

}

java com.zizhu.Hello

當然,如果你使用的IDE,例如eclipse,那麼你必須先切換到bin目錄下:

cd D:\Java\WorkSpace\Hello\bin
D:
java com.zizhu.Hello

2.如果Hello.java依賴與某個jar包,該怎麼執行?例如Hello依賴於log4j.jar包

//源代碼:

package com.zizhu;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class Hello {
	
	private static Log log = LogFactory.getLog(Hello.class);
	
	public static void main(String args[]){
		log.debug("Hello,World!! java command");
	}

}

此時,bin目錄下新建一個lib包,把log4j.jar和commons-loggin.jar放進去,執行如下命令:

cd D:\Java\WorkSpace\Hello\bin
D:
java -classpath lib/commons-logging-1.0.4.jar;lib/log4j-1.2.16.jar; com.zizhu.Hello

注意點:jar後面必須要有分號,否則,肯定執行不了;如果執行不了,我的建議是把jar包名字改了,版本號去掉,儘量別包含特殊字符,這樣更容易成功,至少spring的jar包全稱跟上我從來沒有執行成功過,但把名字變短,沒有".",沒有特殊字符之後,一下就成功了

3.java命令執行jar包(包含main函數):

//源代碼:

package com.zizhu;

public class Hello {
	
//	private static Log log = LogFactory.getLog(Hello.class);
	
	public static void main(String args[]){
//		log.debug("Hello,World!! java command");
		System.out.println("command: java -jar test.jar");
	}

}

a.首先需要將這個類打成jar包:

cd D:\Java\WorkSpace\Hello\bin
D:
jar cvf test.jar *

b.然後用WinRAR軟件打開jar包,找到/META-INF下的清單文件,添加屬性:

Main-Class: com.zizhu.Hello
注意點:1.Main-Class:冒號後面一定要空格,不然不行的;2.com.zizhu.Hello後面一定要回車,不然也不行;那麼最後的這個清單文件應該是這樣的:

Manifest-Version: 1.0
Created-By: 1.6.0_24 (Sun Microsystems Inc.)
Main-Class: com.zizhu.Hello
com.zizhu.Hello後面這個回車沒有顯示出來,但一定需要添加,否則,必定執行不了,至少我測出來就是執行不了;添加好之後,保存,WinRAR會提示覆蓋原來的清單文件,確定就行了

c.執行這個jar文件:

java -jar test.jar

4.如果自己打包的這個jar文件還依賴其他的jar包,該怎麼執行?

//源代碼:

package com.zizhu;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class Hello {
	
	private static Log log = LogFactory.getLog(Hello.class);
	
	public static void main(String args[]){
		log.debug("command: java -jar test.jar");
	}

}

當然首先還是將Hello類打包,然後修改清單文件:

添加Main-Class屬性和Class-Path屬性:

Manifest-Version: 1.0
Created-By: 1.6.0_24 (Sun Microsystems Inc.)
Main-Class: com.zizhu.Hello
Class-Path: lib/log4j.jar lib/commons-logging.jar

同樣,該空格的地方空格,該回車的地方回車,最後覆蓋,跟3的步驟一樣,最後執行
java -jar test.jar

四種執行java類,jar包的方式基本結束,當然還有自定義加載器,可以參考我另一篇文章,成功的將web程序的某一部分業務轉換成了windows本地任務,而這個web程序的業務邏輯使用了spring的jar包,hibernate的jar包,總共在WEB-INF/lib下一共有71個jar包,都是使用自定義加載器加載,然後利用反射成功調用web的業務邏輯,也是手動執行java命令,手動執行,詳情參見:自定義ClassLoader詳解_將web程序部分業務轉化到本地程序執行

發佈了116 篇原創文章 · 獲贊 15 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章