第一部分:單文件
一、背景
目標文件HelloWorld.java
package ccdate; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }
二、編譯
cd ccdate
javac HelloWorld.java
如果不報錯而且多了一個HelloWorld.classs,恭喜你編譯成功。
三、運行
java HelloWorld
什么?報錯了
Error: Could not find or load main class HelloWorld
四、解決方案
網上搜索到的最普遍的說法是CLASSPATH沒有正確的設置。
export JAVA_HOME=/usr/java/jdk1.8.0_112 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
然后執行source /etc/profile
然而,錯誤依舊。
五、最終的解決
原因,我的示例類有一個包路徑ccdate
cd .. //就是離開當前的包路徑 java ccdate.HelloWorld
OK,能看到讓人激動的Hello World!打印了。
第二部分:含第三方依賴庫的項目
一、背景
1. 項目名稱fs-esl
2. 項目主路徑/home/fs-esl
3. 項目結構
3.1 java源文件的路徑
fs-esl/com/*
//本文檔實際測試時就一個main類,
//具體路徑fs-esl/com/vvhi/fsesl/begining/FsEsl.java
//這個類就干一件事,打印Hello World!
3.2 項目關聯的第三方庫
fs-esl/lib
3.3 menifest文件
fs-esl/menifest
二、編譯
cd /home/fs-esl
javac -Djava.ext.dirs=./lib com/vvhi/fsesl/begining/FsEsl.java
如果多了一個FsEsl.java旁邊多了一個同名的class文件,編譯成功。
三、menifest
編輯menifest,根據實際情況改寫。示例:
Manifest-Version: 1.0 Class-Path: . lib/slf4j-api-1.7.25.jar lib/log4j-slf4j-imp l-2.8.2.jar lib/log4j-api-2.8.2.jar lib/log4j-core-2.8.2. jar lib/spring-jdbc-4.3.6.RELEASE.jar lib/junit-4.12.jar lib/spring-beans-4.3.6.RELEASE.jar lib/spring-core-4.3.6. RELEASE.jar lib/spring-tx-4.3.6.RELEASE.jar lib/hamcrest- core-1.3.jar lib/commons-logging-1.2.jar lib/esl.jar Main-Class: com.vvhi.fsesl.begining.FsEslMain
四、打包
cd /home/fs-esl jar cvmf menifest fs-esl.jar com/vvhi/fsesl/begining/FsEsl.class
如果不報錯而且多了一個fs-esl.jar文件,打包成功。
五、運行
java -jar fs-esl.jar
如果屏幕出現Hello World!
恭喜!你成功的完成了一次手動編譯、打包java項目的全過程。