跳转至

在命令行运行 Java 程序

简介

在命令行中运行 Java 程序是 Java 开发者必备的技能之一。它不仅有助于理解 Java 程序的执行机制,还在开发、测试和部署过程中发挥着重要作用。通过命令行运行 Java 程序,开发者可以更灵活地控制程序的执行环境和参数,而不依赖于集成开发环境(IDE)。本文将详细介绍在命令行运行 Java 程序的基础概念、使用方法、常见实践以及最佳实践。

目录

  1. 基础概念
  2. 使用方法
    • 编译 Java 源文件
    • 运行 Java 类文件
  3. 常见实践
    • 传递命令行参数
    • 处理多个类
  4. 最佳实践
    • 设置环境变量
    • 使用脚本简化操作
  5. 小结
  6. 参考资料

基础概念

Java 源文件

Java 源文件是以 .java 为扩展名的文本文件,包含 Java 代码。一个 Java 源文件可以包含多个类定义,但只能有一个 public 类,并且该 public 类的名称必须与源文件的名称相同。

字节码文件

Java 编译器(javac)将 Java 源文件编译成字节码文件,其扩展名为 .class。字节码文件包含 Java 虚拟机(JVM)可以理解和执行的指令。

Java 虚拟机(JVM)

JVM 是 Java 程序的运行环境,它负责加载字节码文件并执行其中的指令。不同的操作系统有对应的 JVM 实现,这使得 Java 程序能够实现 “一次编写,到处运行” 的特性。

使用方法

编译 Java 源文件

在命令行中,使用 javac 命令来编译 Java 源文件。假设我们有一个名为 HelloWorld.java 的源文件,内容如下:

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

打开命令行终端,导航到包含 HelloWorld.java 文件的目录,然后执行以下命令:

javac HelloWorld.java

如果编译成功,在当前目录下会生成一个 HelloWorld.class 的字节码文件。

运行 Java 类文件

使用 java 命令来运行编译后的 Java 类文件。在命令行中执行以下命令:

java HelloWorld

这里不需要指定 .class 扩展名。执行上述命令后,控制台将输出:

Hello, World!

常见实践

传递命令行参数

Java 的 main 方法接受一个 String 类型的数组作为参数,这个数组可以用来接收命令行传递的参数。例如,我们修改 HelloWorld.java 如下:

public class HelloWorld {
    public static void main(String[] args) {
        if (args.length > 0) {
            for (String arg : args) {
                System.out.println("Argument: " + arg);
            }
        } else {
            System.out.println("No arguments provided.");
        }
    }
}

编译后,在命令行中运行并传递参数:

java HelloWorld one two three

输出结果将是:

Argument: one
Argument: two
Argument: three

处理多个类

一个 Java 项目通常包含多个类。假设我们有两个类 MainClass.javaHelperClass.java,结构如下:

MainClass.java

public class MainClass {
    public static void main(String[] args) {
        HelperClass helper = new HelperClass();
        helper.printMessage();
    }
}

HelperClass.java

class HelperClass {
    public void printMessage() {
        System.out.println("This is a message from HelperClass.");
    }
}

首先编译两个源文件:

javac MainClass.java HelperClass.java

然后运行 MainClass

java MainClass

输出:

This is a message from HelperClass.

最佳实践

设置环境变量

为了方便在命令行中使用 javacjava 命令,需要设置 JAVA_HOMEPATH 环境变量。

  1. 设置 JAVA_HOME
  2. 在 Windows 系统中,右键点击 “此电脑”,选择 “属性” -> “高级系统设置” -> “环境变量”。在 “系统变量” 中点击 “新建”,变量名输入 JAVA_HOME,变量值输入 JDK 的安装路径,例如 C:\Program Files\Java\jdk-11.0.11
  3. 在 Linux 或 macOS 系统中,可以编辑 .bashrc.zshrc 文件,添加如下内容: bash export JAVA_HOME=/path/to/jdk 然后执行 source ~/.bashrcsource ~/.zshrc 使设置生效。

  4. JAVA_HOME/bin 添加到 PATH 变量

  5. 在 Windows 系统中,在 “系统变量” 中找到 PATH 变量,点击 “编辑”,然后点击 “新建”,添加 %JAVA_HOME%\bin
  6. 在 Linux 或 macOS 系统中,在 .bashrc.zshrc 文件中添加如下内容: bash export PATH=$JAVA_HOME/bin:$PATH 执行 source ~/.bashrcsource ~/.zshrc 使设置生效。

使用脚本简化操作

为了避免每次都在命令行中输入编译和运行命令,可以编写脚本。

Windows 批处理脚本

创建一个名为 run.bat 的文件,内容如下:

javac HelloWorld.java
java HelloWorld
pause

双击 run.bat 即可编译并运行 HelloWorld 程序。

Linux 和 macOS 脚本

创建一个名为 run.sh 的文件,内容如下:

#!/bin/bash
javac HelloWorld.java
java HelloWorld

设置脚本的可执行权限:

chmod +x run.sh

然后执行脚本:

./run.sh

小结

在命令行运行 Java 程序是 Java 开发的基础技能。通过理解编译和运行的过程,掌握传递参数和处理多个类的方法,并遵循设置环境变量和使用脚本等最佳实践,开发者可以更高效地进行 Java 开发和调试。希望本文能帮助读者深入理解并熟练运用在命令行运行 Java 程序的相关知识。

参考资料