首先检查系统是否安装了JDK,使用以下命令查看版本:
java -version
javac -version
若未安装,通过yum安装OpenJDK(以1.8为例):
sudo yum install java-1.8.0-openjdk-devel -y
安装后再次验证版本,确保javac命令可用。
编辑全局环境变量文件(如/etc/profile),添加以下内容(根据实际JDK路径调整):
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk # 或手动安装的路径,如/usr/local/java/jdk1.8.0_291
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # 可选,部分项目可能需要
保存后执行source /etc/profile使配置生效,验证变量:
echo $JAVA_HOME # 应输出JDK路径
javac -version # 应显示编译器版本
注意:避免在CLASSPATH中遗漏当前目录(.),否则编译时可能找不到同目录下的类文件。
-cp/-classpath正确设置编译类路径编译时通过-cp(或-classpath)选项指定依赖路径,格式为:当前目录(.)+ 依赖库路径(如.jar文件或目录)。例如:
# 编译时包含当前目录和lib目录下的所有jar文件
javac -cp ".:/path/to/your/libs/*" YourJavaFile.java
# 若有多个依赖目录,用冒号分隔
javac -cp ".:/path/to/libs1/*:/path/to/libs2/" YourJavaFile.java
关键点:
.)必须包含,否则编译器无法找到同目录下的类文件;*通配符用于包含目录下所有.jar文件(CentOS支持);:),而非Windows的分号(;)。若编译提示“找不到类”或“NoClassDefFoundError”,需确认依赖库是否齐全:
.jar文件已下载并放置在指定目录;ls命令检查依赖库路径是否正确,例如:ls -l /path/to/your/libs/
sudo yum install xxx-devel安装系统级库)。旧版本的.class文件可能与当前代码冲突,导致类路径问题。执行以下命令清理并重新编译:
# 删除所有.class文件(当前目录下)
rm -rf *.class
# 重新编译,注意加上-cp参数
javac -cp ".:/path/to/your/libs/*" YourJavaFile.java
提示:对于大型项目,建议使用make clean或构建工具(如Maven)的clean命令清理。
若Java类声明了包名(如package com.example;),必须确保其所在目录与包名匹配。例如:
com/example/YourClass.java应位于com/example/目录下;com目录的上级目录)执行命令:javac -cp ".:/path/to/your/libs/*" com/example/YourClass.java
注意:包名路径与目录结构不一致会导致编译器无法找到类。
对于复杂项目,手动管理类路径易出错,建议使用Maven或Gradle:
pom.xml文件定义依赖,执行mvn compile自动下载依赖并编译;build.gradle文件定义依赖,执行gradle build完成编译。