JAVA命令行編譯及運行


第一部分:單文件

一、背景
目標文件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項目的全過程。


免責聲明!

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



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