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程序部分業務轉化到本地程序執行