配套教程 · 动手环境搭建(JDK + MySQL + IDE)

实验环境配置

把教材上的代码真正跑起来,需要三件事:JDK(编译运行 Java)、MySQL(数据库课的实验库)、以及顺手的编辑器或 IDE。 本页按安装顺序给出可照抄的步骤,并附常见报错的排查方法。

JDK 安装与验证 命令行跑通第一个程序 MySQL 建库建表 JDBC 驱动引入 常见报错排查

第 1 步 安装 JDK 并验证

JDK 包含编译器 javac 与运行时 java;只装 JRE 无法编译。

  • 下载:选择 LTS 版本(JDK 17 或 21),Windows 选 x64 Installer(.msi)。
  • 安装:一路默认即可,记下安装路径(如 C:\Program Files\Java\jdk-21)。
  • 配置环境变量:新建系统变量 JAVA_HOME 指向安装目录;在 Path 中追加 %JAVA_HOME%\bin。
  • 验证(重新打开一个命令行窗口):
java -version      // 显示 java version "21.x"
javac -version     // 显示 javac 21.x
echo %JAVA_HOME%   // Windows:确认指向 JDK 目录

// PowerShell 中查看
$env:JAVA_HOME
常见报错
  • "javac 不是内部或外部命令":Path 未配置或未生效——检查 Path 是否包含 %JAVA_HOME%\bin,并重开命令行窗口。
  • java -version 与 javac -version 版本不一致:Path 中存在其它 Java 路径(如旧版 JRE 或 Oracle 自带的 java.exe),把 %JAVA_HOME%\bin 移到最前面。

第 2 步 用命令行跑通第一个程序

先用命令行跑通,再上 IDE——这样出错时更容易定位。

  • 新建目录(路径不要含中文与空格),在其中创建 Hello.java。
  • 文件名必须与 public 类名完全一致(区分大小写)。
// Hello.java
public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, Java");
    }
}
// 在该目录下执行
javac Hello.java    // 编译,生成 Hello.class
java Hello          // 运行,注意不带 .class

// 输出:Hello, Java
要点
  • 编码问题:Windows 记事本默认可能存成 GBK,含中文时会编译报错或输出乱码。解决办法:文件另存为 UTF-8,或编译时指定 javac -encoding UTF-8 Hello.java。
  • 类名与文件名不一致会直接编译失败。
  • 运行时报"找不到或无法加载主类":多半是写了 java Hello.class 或当前目录不对。

第 3 步 选择编辑器或 IDE

工具只影响效率,不影响语法学习。

  • 入门阶段:命令行 + 轻量编辑器(VS Code / Notepad++)足够,能看清"编译—运行"的全过程。
  • IntelliJ IDEA(社区版免费):新建 Project → 选择 JDK → 新建 class → 右键 Run。适合做课程设计与调试。
  • Eclipse:教材与实验指导常用,界面与 IDEA 不同但流程一致(新建 Java Project → 新建 Class → Run)。
  • 无论哪种 IDE,都要确认它使用的 Project SDK 指向刚安装的 JDK,而不是自带 JRE。
常见报错
  • IDE 提示"找不到 SDK":在 Project Structure 中手动指定 JDK 安装目录。
  • IDE 能运行但命令行不行:说明 IDE 自带了运行时,命令行环境仍需单独配置。

第 4 步 安装 MySQL 并建库

数据库课的实验需要真实执行 SQL。

  • Windows 可用 MySQL Installer(选 Server + Workbench),或安装 MariaDB;也可用 SQLite 做轻量替代(无需服务)。
  • 安装时记住 root 密码与端口(默认 3306)。
-- 登录后建立教材使用的"学生—课程"库
CREATE DATABASE school DEFAULT CHARSET utf8mb4;
USE school;

CREATE TABLE Student (
  Sno   CHAR(9) PRIMARY KEY,
  Sname VARCHAR(20),
  Ssex  CHAR(2),
  Sage  SMALLINT,
  Sdept VARCHAR(20)
);
CREATE TABLE Course (
  Cno   CHAR(4) PRIMARY KEY,
  Cname VARCHAR(40),
  Cpno  CHAR(4),
  Ccredit SMALLINT
);
CREATE TABLE SC (
  Sno   CHAR(9),
  Cno   CHAR(4),
  Grade SMALLINT,
  PRIMARY KEY (Sno, Cno),
  FOREIGN KEY (Sno) REFERENCES Student(Sno),
  FOREIGN KEY (Cno) REFERENCES Course(Cno)
);

INSERT INTO Student VALUES ('201215121','李勇','男',20,'CS'),
                           ('201215122','刘晨','女',19,'CS'),
                           ('201215123','王敏','女',18,'MA');
INSERT INTO Course VALUES ('1','数据库','5',4),('2','数学',NULL,2),('3','信息系统','1',4);
INSERT INTO SC VALUES ('201215121','1',92),('201215121','2',85),('201215122','1',90);
常见报错
  • 中文乱码:建库时指定 utf8mb4,客户端连接也要使用相同字符集。
  • Can't connect to MySQL server:服务未启动(Windows 服务中启动 MySQL80)或端口被占用。
  • 外码约束失败:插入 SC 前必须先有对应的 Student 与 Course 记录。

第 5 步 引入 JDBC 驱动

让 Java 程序连上 MySQL。

  • 下载 MySQL Connector/J(mysql-connector-j-8.x.jar),与 MySQL 8 搭配使用。
  • 命令行方式:把 jar 放在项目目录,编译与运行时用 classpath 指定(Windows 分隔符为分号)。
  • IDE 方式:把 jar 加入项目的依赖库(Module Dependencies / Build Path)。
// 驱动类名(MySQL 8)
com.mysql.cj.jdbc.Driver

// 连接 URL(注意时区参数,否则常见报时区错误)
jdbc:mysql://localhost:3306/school?useSSL=false&serverTimezone=UTC

// 命令行编译运行(Windows)
javac -cp ".;mysql-connector-j-8.0.33.jar" Main.java
java  -cp ".;mysql-connector-j-8.0.33.jar" Main
常见报错
  • ClassNotFoundException: com.mysql.cj.jdbc.Driver:jar 未加入 classpath。
  • The server time zone value ... is unrecognized:在 URL 后加 serverTimezone=UTC。
  • Access denied for user:用户名或密码错误,或该用户未被授权从本机登录。
  • Public Key Retrieval is not allowed:URL 追加 allowPublicKeyRetrieval=true(仅实验环境使用)。

在线环境 vs 本地环境

两类环境都已就绪,按场景选用。

  • Java 在线运行:已可用——服务器已安装 OpenJDK 17,打开 Java 在线运行环境 即可编译并执行代码(禁文件写入、网络与执行外部程序,超时自动中断)。
  • SQL 在线练习:已可用——打开 SQL 在线沙盒,内置教材"学生—课程"三表数据,可即时执行 SELECT 并查看结果表。
  • 仍需本地环境的场景:图形界面(Swing / AWT)、文件读写、JDBC 连接 MySQL、调试与单步执行——按本页前面的步骤配置本地 JDK 与 MySQL。
  • 建议用法:在线沙盒用于快速验证语法与算法思路;课程作业与上机实验在本地完成,报错信息更完整。
要点
  • 学习阶段建议优先用本地环境:报错信息完整、调试方便,也更接近课程上机要求。
  • 把示例代码复制到本地后再运行,比只看不练效果好得多。