简单记录一下Java的基础开发过程

木头的喵喵拖孩

开发环境安装

JDK 安装和管理

这里推荐使用 JDK 版本管理器 jabba

注意:

  • 需要使用 PowerShell 来安装和更新 jabba,
  • 如果后续需要使用 CMD 来管理 JDK 版本,需要先将 jabba 的可执行文件添加到环境变量,要正常使用 jabba 的 JDK 版本切换功能,必须在 PowerShell 环境下
  • 切换 JDK 版本只有在本次 PowerShell 打开时有效,关闭后重新打开需要再次设置 JDK 版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
## 为windows10安装jabba
# (use the same command to upgrade)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-Expression (
Invoke-WebRequest https://github.com/shyiko/jabba/raw/master/install.ps1 -UseBasicParsing
).Content

## 卸载jabba
#jsyk: jabba keeps everything under ~/.jabba (on Linux/Mac OS X) / %USERPROFILE%/.jabba (on Windows). If at any point of time you decide to uninstall jabba - just remove this directory.

## 使用jabba
# list available JDK's
jabba ls-remote
# you can use any valid semver range to narrow down the list
jabba ls-remote zulu@~1.8.60
jabba ls-remote "*@>=1.6.45 <1.9" --latest=minor

# install Oracle JDK
jabba install 1.15.0
# install Oracle Server JRE
jabba install sjre@1.8
# install Adopt OpenJDK (Hotspot)
jabba install adopt@1.8-0
# install Adopt OpenJDK (Eclipse OpenJ9)
jabba install adopt-openj9@1.9-0
# install Zulu OpenJDK
jabba install zulu@1.8
jabba install zulu@~1.8.144 # same as "zulu@>=1.8.144 <1.9"
# install IBM SDK, Java Technology Edition
jabba install ibm@1.8
# install GraalVM CE
jabba install graalvm@1.0-0
# install OpenJDK
jabba install openjdk@1.10-0
# install OpenJDK with Shenandoah GC
jabba install openjdk-shenandoah@1.10-0

# install from custom URL
# (supported qualifiers: zip (since 0.3.0), tgz, tgx (since 0.10.0), dmg, bin, exe)
jabba install 1.8.0-custom=tgz+http://example.com/distribution.tar.gz
jabba install 1.8.0-custom=tgx+http://example.com/distribution.tar.xz
jabba install 1.8.0-custom=zip+file:///opt/distribution.zip

# uninstall JDK
jabba uninstall zulu@1.6.77

# link system JDK
jabba link system@1.8.72 /Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk

# list all installed JDK's
jabba ls

# switch to a different version of JDK (it must be already `install`ed)
jabba use adopt@1.8
jabba use zulu@~1.6.97

echo "1.8" > .jabbarc
# switch to the JDK specified in .jabbarc (since 0.5.0)
jabba use

# set default java version on shell (since 0.2.0)
# this version will automatically be "jabba use"d every time you open up a new terminal
jabba alias default 1.8

或者如果你想自己安装 JDK 自己管理版本,可以使用以下地址
OpenJDK 下载地址
Oracle JDK 8 能使用版本为 jdk1.8.0_192,高版本的 JDK 将涉及商业问题,需要使用 Open JDK,但是 jre 不存在商业问题

OracleJDK 下载地址

当前 JDK 版本 1.8.0_181

切换 Java 脚本

因为切换 JDK 版本只在本次PowerShell 打开时有效,关闭后重新打开需要再次设置 JDK 版本,
所以可以使用PowerShell脚本来快速配置 JDK 版本,
例如:创建一个 switch.ps1 文件,在里面配置好切换 JDK 版本的命令,然后使用快捷键或者脚本来执行这个文件,就可以快速切换 JDK 版本了

1
2
3
4
5
6
# 使用jabba切换到指定的Java版本
jabba ls
jabba use system@1.8.0

# 可以在这里添加更多的命令,比如验证Java版本
java -version

VSCode 插件

vscode 需要在插件菜单搜索并安装 Extension Pack for Java 插件

插件环境配置

当使用插件来管理 Java 项目时,需要使用插件自己的配置来指定项目的运行环境和编译环境,步骤如下:

  1. 在 VSCode 中随便点击一个 java 源码文件,左侧栏下方会出现一个 JAVA PROJECTS,里面就是当前项目
  2. 右键点击当前项目的名称,然后选择“ClassPath”打开配置页面
  3. 在配置页面中,看到 Classpath -> JDK Runtime 就是配置 Java 项目运行环境的地方
  4. 在配置页面中,看到 Compiler 就是配置 Java 项目编译环境的地方

如下图所示:

Hello World

一个简单的小项目,这个项目解决了 Java 环境搭建问题、包(package)命名问题、UI 界面问题、jar 打包问题

目录结构及代码

  • testJava
    • demo
      • Index.java
      • Demo.java
1
2
3
4
5
6
7
8
// Index.java
package demo;

public class Index {
public static void main(String[] args) {
new Demo();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Demo.java
package demo;

import javax.swing.*;
import java.awt.*;

public class Demo extends JFrame {
public Demo() {
try {
String lookAndFeel = UIManager.getCrossPlatformLookAndFeelClassName();
UIManager.setLookAndFeel(lookAndFeel);
} catch(Exception exc) {}
setPreferredSize(new Dimension(600, 400));
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Hello World!");
setVisible(true);
}
}

打包及运行

使用插件打包,可以使用左侧下方的 JAVA PROJECTS 功能,点击当前项目名右侧的一个“→”符号即可将项目打包为 jar,如下图所示:

然后使用以下命令运行 jar

1
java -jar xxxxx.jar

已知问题

如果出现 package 报错,可能是未将项目添加到 classpath 中,可以尝试以下解决方案。

插件配置 VSCode

参考插件环境配置,
并配置 Classpath -> Sources 页面即可。

手动配置 VSCode

vscode 当前项目目录配置项,需要在根目录建立.vscode/settings.json 文件后写入下面的配置项。
主要是为了解决包路径和项目路径不匹配问题

1
2
3
{
"java.project.sourcePaths": ["yourJavaProjectPath"]
}

Maven

Maven 是 Java 的包管理器或者项目管理器,
通常情况下,一个项目不会使用刚才的Hello World 章节来创建和编写,而是都会使用 Maven 来管理,Maven 帮我们简化了各种繁琐的工作,比如引入依赖文件,创建项目目录等。

下载 Maven

下载 maven

配置 Maven

添加 Maven 到系统环境

将下载好的压缩包直接解压到事先准备好的空文件夹(注意路径不要有中文、特殊字符等),然后将该路径下的 bin 目录添加到系统变量即可。

配置 settings.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<!-- 本地仓库路径 -->
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:/yourRepository</localRepository>

<!-- 镜像网址 -->
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/central</url>
<mirrorOf>central</mirrorOf>
</mirror>

<mirror>
<id>alimaven2</id>
<name>aliyun maven2</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

<mirror>
<id>uk</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://uk.maven.org/maven2/</url>
</mirror>

<mirror>
<id>CN</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<!-- <url>http://192.168.1.100:8081/nexus/content/groups/public/</url>-->
<url>http://repo.maven.apache.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>

配置 vscode

vscode 全局配置项

1
2
3
4
5
{
"java.configuration.maven.globalSettings": "D:\\yourMavenGlobalSettings\\settings.xml",
"java.configuration.maven.userSettings": "D:\\yourMavenGlobalSettings\\settings.xml",
"maven.executable.path": "D:\\yourMavenBin\\mvn"
}

使用 Maven

pom.xml

pom.xml 是 Maven 项目特有的核心配置文件。它是 Maven Project Object Model (POM) 的 XML 表示,用于定义项目的构建、依赖、插件等信息。
下面是一个基础的 pom.xml 配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!-- Maven项目的根元素,包含了POM的所有配置信息 -->
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<!-- 指定POM模型的版本,对于Maven 2和Maven 3来说,它总是4.0.0 -->
<modelVersion>4.0.0</modelVersion>

<!-- 项目的groupId,通常用于唯一标识项目的所属组织 -->
<groupId>com.example</groupId>

<!-- 项目的artifactId,通常用于唯一标识项目的名称 -->
<artifactId>demo</artifactId>

<!-- 项目的版本号,用于标识项目的特定版本 -->
<version>1.0</version>

<!-- 项目的打包方式,如jar、war等 -->
<packaging>jar</packaging>

<!-- 项目的名称,通常用于显示或引用项目时使用 -->
<name>My Project</name>

<!-- 项目的描述,用于说明项目的用途、功能等 -->
<description>My Project</description>

<!-- 项目的一些属性配置,如Java版本等 -->
<properties>
<java.version>11</java.version>
</properties>

<build>
<plugins>
<!-- 需要添加该插件,来保证jar中写入了主清单(主类)属性 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.example.demo.你的主类名</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>

mvn 命令

mvn 是 Maven 的命令行工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 打包项目,这个命令会打包你的项目,生成一个JAR文件(如果你的pom.xml中的packaging设置是jar),这个JAR文件会放在target目录下。
mvn package

# 编译项目,这个命令会编译你的项目源代码,并将编译后的文件放在target/classes目录下。
mvn compile

# 清理项目,这个命令会删除target目录(如果存在的话),这个目录通常包含了构建过程中生成的文件,如编译后的类文件、测试报告等。
mvn clean

# 测试项目,这个命令会编译你的测试代码,并执行测试。测试报告和结果会放在target/surefire-reports目录下。
mvn test

# 安装项目,这个命令会执行package命令,并将生成的JAR文件安装到你的本地Maven仓库中,以便其他项目可以引用它。
mvn install

打包也可以使用 GUI 提供的工具,如下图所示

手动创建 Maven 新项目

  1. 需要创建一个新的目录作为新项目的根目录,然后创建一个 pom.xml,其内容可以参考pom.xml
  2. 创建子目录,如下,仅 Java 源代码目录是必须的,其他目录根据需要选择
    |– pom.xml
    |– src
    | |– main
    | | |– java # Java 源代码目录
    | | |– resources # 项目主资源文件目录(如配置文件)
    | | |– scripts # 脚本文件目录(可选)
    | | |– webapp # Web 应用的目录(Web 项目特有,包含 JSP、HTML 等)
    | | |– … # 其他主目录(可选)
    | |– test
    | |– java # Java 测试源代码目录
    | |– resources # 测试资源文件目录(如测试配置文件)
    | |– … # 其他测试目录(可选)
    |– target # Maven 构建生成的目录(包含编译后的类文件、jar 包等)
    |– LICENSE.txt # 项目许可证文件(可选)
    |– NOTICE.txt # 项目通知文件(可选)
    |– README.txt # 项目说明文件(可选)
    |– .mvn # Maven wrapper 的目录(可选,用于确保跨环境 Maven 版本一致性)
    | |– wrapper # Maven wrapper 的 jar 和脚本
    | |– maven-wrapper.jar
    | |– maven-wrapper.properties
    |– .gitignore # Git 忽略文件(可选)
  3. 编写代码
  4. 打包,参考mvn 命令
  5. 运行,使用 java -jar JARPATH 来执行 jar 文件

基于 Maven 原型创建新项目

使用 Ctrl+Shift+P 打开 VSCode 的命令,或者使用 GUI 中的 从 Maven 原型创建新项目



参考

Java 的 JDK 多版本管理与常用命令(JEnv、SDKMAN、Jabba)

  • 标题: 简单记录一下Java的基础开发过程
  • 作者: 木头的喵喵拖孩
  • 创建于: 2023-06-08 14:41:55
  • 更新于: 2024-08-09 15:12:40
  • 链接: https://blog.xx-xx.top/2023/06/08/简单记录一下Java的基础开发过程/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。