编写java的软件怎么用:从准备到完成的实操步骤

SEO教程19小时前发布 jdkjadmin
0 00
编写java的软件怎么用:从准备到完成的实操步骤

编写java的软件怎么用:从准备到完成的实操步骤

编写 Java 程序,通常要先安装 JDK,再选择代码编辑器或集成开发环境(IDE),创建项目、编写代码、运行测试,最后按需要打包或部署。初学者容易把“写代码的软件”“Java 运行环境”和“项目构建工具”混为一谈:它们各有用途,但并不一定要一次全部学会。

本文从一个能在命令行运行的小程序开始,逐步介绍开发工具的选择、JDK 配置、IDE 操作、Maven 项目、调试与交付,并说明输入校验、依赖和文件操作中的常见安全边界。文中的命令以常见终端为例;不同操作系统、软件版本的界面和命令细节可能略有差异。

一、先弄清楚需要安装什么

1. JDK:编译和运行 Java 程序

JDK(Java Development Kit,Java 开发工具包)包含运行 Java 程序所需的组件,也包含编译器等开发工具。安装 JDK 后,通常可以使用 java 运行程序,使用 javac 编译 Java 源文件。

一般的新项目可优先考虑仍处于维护期、且与目标平台兼容的 JDK 长期支持版本,例如 JDK 17 或 JDK 21。具体选哪个版本,要看课程要求、现有项目、服务器环境和所用框架的兼容情况。不要只看电脑上安装了什么版本:项目实际使用的 JDK、构建配置中的目标版本和部署环境都需要匹配。

JDK 与 IDE 是两件事。安装了 IntelliJ IDEA、Eclipse 或 VS Code,并不一定就已经安装了 JDK;反过来,只安装 JDK 也能通过命令行写、编译和运行程序。

2. 选择编写 Java 的软件

  • IntelliJ IDEA:提供代码补全、项目管理、调试和测试等功能。适合希望在一个软件里完成大多数开发工作的用户。不同版本和插件的功能、授权条件可能不同,安装前应查看官方说明。
  • Eclipse:常用于 Java 开发,适合已有 Eclipse 工作区或项目的团队。项目导入方式会随项目类型而变化。
  • VS Code:本身是通用编辑器,通常要配合 Java 扩展及正确配置的 JDK 使用。扩展的可用功能和版本要求应以扩展说明为准。
  • 文本编辑器加命令行:适合学习 Java 编译运行流程、在服务器上操作或快速验证小程序。它不提供完整 IDE 的项目导航和调试体验。

初学者不必同时安装多个 IDE。选一个熟悉的工具即可;后面的示例也可以完全不依赖 IDE。

二、安装后先验证环境

安装 JDK 后,打开新的终端窗口,输入:

java -version
javac -version

两个命令都能显示版本信息,说明终端至少可以找到 Java 运行命令和编译器。版本号应按项目要求核对。若提示“命令不存在”或“不是内部或外部命令”,常见原因是 JDK 未安装、终端尚未重新打开,或者系统的 PATH 没有包含 JDK 的 bin 目录。

部分系统还会使用 JAVA_HOME 指向 JDK 安装目录。是否需要设置,取决于所用工具和构建环境;不能把 JAVA_HOME 设置为 JRE 目录或误指向另一个旧版 JDK。环境变量的设置方法因 Windows、macOS、Linux 的版本和安装方式而异,建议按所用系统的官方文档操作,修改后重新打开终端再验证。

三、先用命令行编写并运行第一个程序

下面的程序从控制台读取摄氏温度,将其转换为华氏温度。它会检查输入是否为数字,也会拒绝超出示例所设范围的数值。这些范围只是这个示例的业务校验,并不是 Java 语言或 BigDecimal 的通用限制。

新建一个目录,例如 TemperatureDemo,在目录中创建文件 TemperatureConverter.java。文件名要与下面的 public class 类名一致:

import java.math.BigDecimal;
import java.util.Scanner;

public class TemperatureConverter {
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            System.out.print("请输入摄氏温度(-100 到 1000):");

            if (!scanner.hasNextBigDecimal()) {
                System.out.println("输入无效:请输入数字。");
                return;
            }

            BigDecimal celsius = scanner.nextBigDecimal();
            BigDecimal min = new BigDecimal("-100");
            BigDecimal max = new BigDecimal("1000");

            if (celsius.compareTo(min) < 0 || celsius.compareTo(max) > 0) {
                System.out.println("输入超出本示例允许的范围。");
                return;
            }

            BigDecimal fahrenheit = celsius
                    .multiply(new BigDecimal("9"))
                    .divide(new BigDecimal("5"))
                    .add(new BigDecimal("32"));

            System.out.println("华氏温度:" + fahrenheit.stripTrailingZeros().toPlainString());
        }
    }
}

在该目录的终端中执行:

javac TemperatureConverter.java
java TemperatureConverter

javac 成功后会生成 TemperatureConverter.class。运行时写类名而不是 .class 文件名。输入 20,程序会输出 华氏温度:68。若提示找不到主类,先确认终端当前目录正确、类名拼写一致,并检查编译是否成功。

这里使用 BigDecimal 是为了避免用二进制浮点数直接处理十进制小数时产生不直观的表示误差。示例中的数字通过字符串构造,适合展示十进制计算;对于科学计算、测量和货币等场景,仍应根据精度、舍入规则和业务要求选择数据类型与计算策略。

四、在 IDE 中创建、运行和调试

不同 IDE 的菜单名称可能随版本变化,但操作过程大致相同:

  1. 选择或配置 JDK。在 IDE 的项目设置中查看项目使用的 JDK。若列表为空,按软件提示定位已安装的 JDK,而不是只选择某个编辑器插件。
  2. 创建项目。初学时可建立普通 Java 项目;如果要管理外部库、运行测试或生成可交付包,可选择 Maven 或 Gradle 项目。
  3. 创建源文件。在源代码目录中新建 Java 类。若类声明为 public,文件名应与类名一致。Java 标识符还不能使用关键字,也要遵守大小写规则。
  4. 运行主类。找到含有 public static void main(String[] args) 的类,通过 IDE 的运行按钮启动。第一次运行前确认运行配置指向了正确的模块和主类。
  5. 使用调试器。在代码行设置断点,进入调试模式后逐步执行,观察变量值和调用栈。调试适合定位程序运行到哪里、数据何时发生变化,不等于程序已经覆盖了所有输入情况。

运行按钮不可用时,先检查项目是否已经识别为 Java 项目、JDK 是否配置、当前文件是否属于源代码目录,以及代码中是否存在编译错误。IDE 的自动补全能帮助编写代码,但不能替代对程序行为的验证。

五、从单文件过渡到 Maven 项目

单文件程序适合入门,但实际项目常包含多个类、测试和第三方依赖。Maven 是常见的项目构建工具之一。安装方式有多种:可以单独安装 Maven,也可以使用项目自带的 Maven Wrapper(通常包含 mvnw 或 mvnw.cmd),具体以项目提供的文件为准。

一个简化的 Maven 项目可以采用以下结构:

temperature-app/
  pom.xml
  src/
    main/
      java/
        example/
          TemperatureConverter.java

以下 pom.xml 指定了 Maven 编译插件和 Java 17 编译目标。它使用 Maven Central 上发布的插件;实际构建仍需要 JDK、Maven 及可访问的依赖仓库。不同环境的网络策略、插件版本和兼容性可能不同,若项目已有统一构建配置,应以项目配置为准。

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>example</groupId>
    <artifactId>temperature-app</artifactId>
    <version>1.0.0</version>

    <properties>
        <maven.compiler.release>17</maven.compiler.release>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.13.0</version>
            </plugin>
        </plugins>
    </build>
</project>

把前面的程序放到 src/main/java/example/TemperatureConverter.java,并在文件开头加上包声明 package example;。然后在项目根目录运行:

mvn clean package

clean 会清理 Maven 默认构建目录,package 会执行构建生命周期直到打包阶段。成功时通常会在 target 目录中看到 JAR 文件。需要注意,这个示例没有配置可执行 JAR 的主类信息,因此生成 JAR 并不自动意味着可以直接用 java -jar 启动。要制作可执行 JAR,需要按项目需求额外配置打包插件和入口类。

若项目带 Maven Wrapper,可在 macOS 或 Linux 上尝试 ./mvnw clean package,在 Windows 命令提示符中使用 mvnw.cmd clean package。Wrapper 的脚本与版本由项目维护,运行来源不明的脚本前应先查看其内容和项目可信度。

六、从“能运行”到“可交付”

开发完成不只意味着本机运行一次。一个基本的检查流程包括:

  1. 验证正常输入。使用几组预期输入,确认输出与需求一致。
  2. 验证边界和无效输入。检查空输入、非数字、最小值、最大值以及超出范围的值。本例的范围仅用于演示,真实程序应由业务规则确定。
  3. 检查错误提示。错误应便于定位问题,不应无意间显示密码、令牌、个人信息或完整的敏感配置。
  4. 执行项目测试和构建。可运行项目已有的测试命令,并确认构建退出状态为成功。单次手工运行不能替代自动化测试。
  5. 确认目标环境。核对部署机器的 Java 版本、系统权限、网络和配置要求。编译目标版本较低,也不能保证程序不依赖目标机器上不存在的 API、库或系统功能。
  6. 保留可复现的项目文件。提交源代码、构建配置和必要说明;一般不需要把临时生成的 target 内容当作唯一交付物,除非团队流程明确要求提交构建产物。

若交付给其他人,说明启动命令、所需 Java 版本、配置项和数据存放位置。若使用第三方依赖,还应遵守其许可证要求,并按组织流程检查依赖来源与版本。

七、参数与安全边界:不要把演示程序当成完整系统

Java 程序可以接收命令行参数、环境变量、配置文件、网络请求或用户输入。它们都是数据来源,不能因为数据“能传进程序”就默认可信。参数的允许范围、长度、格式和含义需要由具体程序定义;Java 并没有替所有业务规定一个统一的输入上限。

  • 校验输入。验证格式、范围和长度,处理缺失值与异常值。校验失败时给出清楚提示,不要让无效输入造成意外退出或错误结果。
  • 保护凭据。不要把密码、访问令牌或生产环境密钥硬编码进源代码,也不要提交到公共代码仓库。根据运行环境使用受控的配置或密钥管理方案,并限制读取权限。
  • 谨慎访问文件。如果程序接收用户提供的路径,不能只靠字符串拼接就认为路径安全。应限制可访问的目录,处理路径穿越等问题,并考虑符号链接、权限和并发写入等因素。
  • 谨慎执行命令。不要把不可信输入直接拼入系统命令。确有调用外部进程的需求时,应采用参数化的进程启动方式、允许列表和权限隔离,并检查退出码与超时。
  • 按场景保护数据。涉及网络通信、个人信息或业务数据时,还需要结合认证授权、传输保护、日志脱敏、备份和数据保留策略。一个本地控制台示例不提供这些能力。

前面的温度程序只读取控制台中的数字并计算结果,不访问网络、文件或系统命令,也不代表它经过了安全审计。不要将其描述成能防御恶意输入的通用方案;在实际应用中,输入校验需要结合数据来源和业务风险设计。

八、常见错误及排查顺序

“找不到 javac”或“找不到 java”

先确认安装的是 JDK,而不是只有其他 Java 运行组件;再检查 PATH 和终端是否刷新。执行 java -version 与 javac -version,观察它们各自找到的版本。若同时安装多个 JDK,IDE、终端和构建工具可能使用不同版本。

文件名和类名不一致

如果类声明为 public class TemperatureConverter,源文件应命名为 TemperatureConverter.java。大小写也要匹配;在大小写敏感的文件系统上尤其容易出错。

程序能编译,却启动不了

核对入口类是否含有正确的 main 方法,运行命令是否包含类路径,当前目录是否正确。若使用了包声明,类的目录结构和启动时的类名也要一致。Maven 项目中的主类名通常带包名,例如 example.TemperatureConverter。

编译版本与运行版本不一致

较新 JDK 编译出的字节码,可能无法在较旧的 Java 运行环境中启动。检查 IDE 的项目 SDK、Maven 或 Gradle 的编译目标、运行时版本和部署环境。设置编译目标不会自动安装或选择对应的运行环境。

IDE 报红,但命令行能运行,或反过来

检查 IDE 项目 SDK、模块设置和依赖刷新状态,再对比终端使用的 java、javac 与构建工具版本。不要只靠重启软件解决问题;先从错误信息定位缺少的类、配置或依赖。

下载依赖失败或构建卡住

查看构建输出中失败的仓库、插件或依赖坐标,检查网络、代理、仓库配置和版本是否可用。不要为“让构建通过”就随意下载来历不明的 JAR;第三方库会进入程序的运行路径,应确认来源并评估维护状况。

结语

使用 Java 开发软件,可以从“安装 JDK、验证环境、编写单文件程序、编译运行”这条最短路径开始,再根据项目规模使用 IDE、Maven 或其他构建工具。初学阶段重点不是记住所有按钮,而是能看懂源文件、编译错误、运行命令和项目配置。准备交付时,再补上测试、版本兼容检查、依赖管理和输入安全处理,程序才更容易在真实环境中稳定运行。

© 版权声明

相关文章