第一部分:单文件
一、背景
目标文件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项目的全过程。