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项目的全过程。

原文地址:https://www.cnblogs.com/yoyotl/p/6821310.html