Ubuntu Java编译常见问题及解决方法
java -version或javac -version时提示“command not found”,或编译时提示“找不到Java编译器”。sudo apt update && sudo apt install openjdk-17-jdk(可根据需求选择版本,如11、8)。~/.bashrc(或~/.zshrc,根据shell类型),添加以下内容(替换为实际安装路径,可通过sudo update-alternatives --config java查看):export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 # 根据实际路径调整
export PATH=$JAVA_HOME/bin:$PATH
保存后运行source ~/.bashrc使配置生效。HelloWorld.java中的公共类必须是public class HelloWorld。javac /home/user/project/HelloWorld.java,或在目标目录下运行javac ../src/HelloWorld.java。-cp(或-classpath)选项指定依赖库路径,多个路径用冒号(Linux/macOS)或分号(Windows)分隔。例如:javac -cp ".:/path/to/library1.jar:/path/to/library2.jar" YourClass.java
其中.表示当前目录,/path/to/library.jar为依赖库路径。javac -encoding UTF-8 YourClass.java
.class文件)。chmod -R 755 /path/to/your/project # 给所有用户读、执行权限,所有者可写
sudo编译,但建议将项目目录所有者改为当前用户:sudo chown -R $USER:$USER /path/to/your/project
pom.xml中的<java.version>或build.gradle中的sourceCompatibility)。update-alternatives命令,例如:sudo update-alternatives --config java # 选择对应版本的Java
sudo update-alternatives --config javac # 选择对应版本的javac
javac -target 1.8 -source 1.8 YourClass.java # 编译为Java 8兼容的字节码
HelloWorld.java:5: error: ';' expected
System.out.println("Hello World"
^
1 error
Error: Could not find or load main class YourClass)。.)和所有依赖库,例如:java -cp ".:/path/to/library.jar" YourClass
com.example.YourClass),需在包根目录下运行,例如:java -cp ".:/path/to/library.jar" com.example.YourClass
javac -J-Xmx1024m YourClass.java # 分配1GB堆内存
sudo fallocate -l 2G /swapfile # 创建2GB swap文件
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
pom.xml(Maven)或build.gradle(Gradle)文件管理依赖和编译配置。sudo apt install mavenmvn compilemvn package