杰瑞科技汇

Linux下Java编译命令是什么?

基础编译和运行

这是最简单、最常用的场景。

Linux下Java编译命令是什么?-图1
(图片来源网络,侵删)

第一步:编写 Java 源代码

创建一个名为 HelloWorld.java 的文件。

# 使用 vim 或 nano 等文本编辑器创建文件
vim HelloWorld.java

在文件中输入以下代码:

// HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

重要提示:

  • 文件名必须与 public class 的名称完全一致,包括大小写,这里是 HelloWorld,所以文件名就是 HelloWorld.java
  • 一个 .java 文件中可以有多个 class,但只能有一个 public class

第二步:编译源代码

使用 javac 命令来编译 .java 源文件,这会生成一个或多个 .class 字节码文件。

Linux下Java编译命令是什么?-图2
(图片来源网络,侵删)
# javac [选项] 源文件名
javac HelloWorld.java

执行成功后,你会看到当前目录下多了一个 HelloWorld.class 文件,这就是 Java 虚拟机可以执行的字节码。

第三步:运行程序

使用 java 命令来运行编译好的 .class 文件。

关键点: java 命令后面不需要 .class 扩展名。

# java [选项] 类名
java HelloWorld

你应该会在终端看到输出:

Hello, World!

处理多文件项目

当一个项目包含多个 .java 文件时,通常需要一起编译。

假设你有以下文件结构:

my-project/
├── src/
│   ├── Main.java
│   └── utils/
│       └── Calculator.java
└── (其他目录...)

Calculator.java

package utils;
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

Main.java

import utils.Calculator;
public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator();
        int result = calc.add(10, 20);
        System.out.println("The result is: " + result);
    }
}

编译方法

src 目录下编译

# 进入 src 目录
cd my-project/src
# 编译所有 .java 文件
javac *.java

*.java 是一个通配符,表示匹配所有以 .java 结尾的文件。javac 会自动处理文件之间的依赖关系。

使用 -d 指定输出目录(推荐)

这是更规范的做法,可以将编译后的 .class 文件输出到指定的目录,保持源码和编译产物分离。

# 在 my-project 目录下执行
cd my-project
# 创建一个目录用于存放编译后的文件
mkdir -p bin
# 编译 src 目录下所有文件,并将 .class 文件输出到 bin 目录
# -d bin: 指定输出目录为 bin
# src/**/*.java: 递归查找 src 目录及其子目录下所有 .java 文件
javac -d bin src/**/*.java

编译完成后,bin 目录的结构会与 src 目录保持一致:

my-project/
├── bin/
│   └── utils/
│       └── Calculator.class
│   └── Main.class
└── src/
    ...

运行多文件项目

运行时,需要告诉 java 命令去哪里寻找 .class 文件,这通过 -classpath (或其简写 -cp) 参数实现。

# 在 my-project 目录下执行
cd my-project
# -cp bin: 指定类路径为 bin 目录
# Main: 指定要运行的类名
java -cp bin Main

输出:

The result is: 30

常用编译选项 (javac)

选项 描述 示例
-d <目录> 指定 .class 文件的输出目录。 javac -d bin src/*.java
-classpath <路径> 指定编译时需要依赖的类路径(查找 .jar 或其他 .class 文件)。 javac -cp "lib/*:." src/Main.java
-sourcepath <路径> 指定源文件的搜索路径(当源文件之间有依赖时)。 javac -sourcepath src src/Main.java
-target <版本> 生成指定版本的 JVM 字节码。-target 1.8 javac -target 11 -source 11 src/*.java
-source <版本> 指定源代码兼容的 Java 版本。 javac -source 17 src/*.java
-Xlint 启用所有推荐的编译器警告。 javac -Xlint src/*.java
-encoding <编码> 指定源文件的字符编码。 javac -encoding UTF-8 src/*.java

常用运行选项 (java)

选项 描述 示例
-classpath <路径>-cp <路径> 指定运行时类路径,即 JVM 查找 .class 文件和 .jar 文件的位置。这是最常用的选项。 java -cp "bin:lib/*" com.example.Main
-jar <jar文件> 运行一个可执行的 JAR 文件。 java -p my-app.jar
-D<属性名>=<属性值> 设置一个系统属性,可以在代码中通过 System.getProperty() 获取。 java -Dmyapp.config.path=/etc/myapp.conf -cp bin Main
-verbose 输出详细的信息,如类加载过程。 java -verbose -cp bin Main
-Xms-Xmx 设置 JVM 的初始堆内存大小和最大堆内存大小。 java -Xms256m -Xmx1g -cp bin Main

高级:构建工具 (Maven / Gradle)

对于复杂的项目,手动使用 javacjava 命令会变得非常繁琐,现代 Java 开发普遍使用构建工具来自动化管理编译、依赖、打包、测试等流程。

Maven

Maven 使用 pom.xml 文件来定义项目配置。

  1. 创建 Maven 项目:

    mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  2. 编译项目: 进入项目目录 (my-app),然后执行:

    cd my-app
    mvn compile
  3. 运行项目:

    mvn exec:java -Dexec.mainClass="com.example.App"

Gradle

Gradle 使用 build.gradlebuild.gradle.kts 文件来定义项目配置。

  1. 创建 Gradle 项目:

    gradle init --type java-application --package com.example --project-name my-app
  2. 编译项目: 进入项目目录 (my-app),然后执行:

    cd my-app
    gradle build

    build 任务会自动包含编译、测试和打包等步骤。

  3. 运行项目:

    gradle run

场景 命令
简单单文件 javac MyClass.java
java MyClass
多文件项目 javac -d bin src/**/*.java
java -cp bin com.example.Main
生产级项目 使用 Maven (mvn compile) 或 Gradle (gradle build)

对于初学者,务必掌握 javacjava 的基本用法,在实际工作中,则应尽快学习并使用 Maven 或 Gradle 来提高开发效率。

分享:
扫描分享到社交APP
上一篇
下一篇