当前位置: 首页 > article >正文

JDK20安装后,除了‘Hello World’还能怎么玩?用VSCode快速搭建你的第一个Java项目

JDK20安装后除了‘Hello World’还能怎么玩用VSCode快速搭建你的第一个Java项目当你成功安装JDK20并验证了环境变量配置后打印Hello World可能已经无法满足你的探索欲望。作为现代Java开发者我们更渴望立即投入实际项目开发。本文将带你使用Visual Studio Code以下简称VSCode——这款轻量级但功能强大的编辑器快速搭建你的第一个结构化Java项目。1. 准备工作VSCode与Java扩展在开始之前确保你已经完成以下准备工作JDK20已正确安装并配置环境变量可通过java -version验证VSCode从官网下载并安装最新版本网络连接用于安装扩展和下载依赖安装VSCode后我们需要为其添加Java开发能力打开VSCode点击左侧活动栏的扩展图标或按CtrlShiftX搜索Extension Pack for Java并安装这个扩展包包含了Java开发所需的核心工具包括语言支持、调试器、Maven/Gradle集成等提示安装完成后可能需要重启VSCode使所有功能生效2. 创建你的第一个Java项目传统Java教程通常从单个.java文件开始但在实际开发中我们更常使用项目结构。下面介绍两种常见方式2.1 使用Maven创建项目Maven是Java生态中广泛使用的项目管理工具它可以帮助我们管理项目依赖标准化项目结构自动化构建过程在VSCode中创建Maven项目的步骤按CtrlShiftP打开命令面板输入Java: Create Java Project并选择选择Maven作为构建工具选择maven-archetype-quickstart作为原型输入项目基本信息GroupId通常使用反转域名如com.yournameArtifactId项目名称如my-first-java-appVersion保持默认或自定义选择项目存储位置创建完成后你会看到一个标准的Maven项目结构my-first-java-app/ ├── pom.xml # Maven配置文件 ├── src/ │ ├── main/ │ │ └── java/ # 主代码目录 │ └── test/ │ └── java/ # 测试代码目录2.2 使用Gradle创建项目替代方案如果你更喜欢Gradle可以按照以下步骤确保已安装Gradle可通过gradle -v验证在VSCode中打开命令面板CtrlShiftP输入Java: Create Java Project并选择选择Gradle作为构建工具选择java-application作为项目类型填写项目基本信息选择存储位置Gradle会生成类似但略有不同的项目结构主要区别在于使用build.gradle代替pom.xml作为构建配置文件。3. 项目结构与代码编写无论选择Maven还是Gradle项目创建后我们都可以开始编写真正的Java代码。让我们修改自动生成的示例代码创建一个简单的命令行计算器。3.1 修改主类代码在src/main/java目录下找到自动生成的App.java路径可能因你输入的项目信息而异修改内容如下package com.yourname.myfirstjavaapp; import java.util.Scanner; public class App { public static void main(String[] args) { Scanner scanner new Scanner(System.in); System.out.println(简单计算器); System.out.println(输入第一个数字:); double num1 scanner.nextDouble(); System.out.println(输入运算符(, -, *, /):); char operator scanner.next().charAt(0); System.out.println(输入第二个数字:); double num2 scanner.nextDouble(); double result; switch(operator) { case : result num1 num2; break; case -: result num1 - num2; break; case *: result num1 * num2; break; case /: result num1 / num2; break; default: System.out.println(错误: 不支持的运算符); return; } System.out.println(结果: result); } }3.2 运行项目在VSCode中运行Java项目非常简单打开包含main方法的Java文件点击编辑器右上角的运行按钮绿色三角形或者按F5启动调试模式你将在VSCode的终端面板中看到程序输出并可以与你的计算器交互。注意首次运行可能需要一些时间因为Maven/Gradle需要下载依赖并编译项目4. 添加依赖与扩展功能现代Java开发的一个巨大优势是丰富的开源库生态系统。让我们通过添加一个流行的库来扩展我们的小项目。4.1 添加Apache Commons Lang3这个库提供了许多实用的工具方法。在Maven项目中添加依赖打开pom.xml文件在dependencies部分添加dependency groupIdorg.apache.commons/groupId artifactIdcommons-lang3/artifactId version3.12.0/version /dependency保存文件后Maven会自动下载依赖现在我们可以使用这个库来改进我们的计算器。修改App.java// 在文件顶部添加导入 import org.apache.commons.lang3.math.NumberUtils; // 修改数字输入部分 System.out.println(输入第一个数字:); String input1 scanner.next(); while(!NumberUtils.isCreatable(input1)) { System.out.println(请输入有效数字:); input1 scanner.next(); } double num1 Double.parseDouble(input1);这样改进后我们的计算器能够更好地处理无效输入。4.2 使用Gradle添加依赖如果你使用的是Gradle修改build.gradle文件dependencies { implementation org.apache.commons:commons-lang3:3.12.0 // 其他依赖... }保存后Gradle会自动下载并管理这些依赖。5. 调试与问题排查VSCode提供了强大的Java调试功能。让我们设置一个断点来观察程序运行在代码左侧点击行号旁边设置断点红色圆点按F5启动调试程序会在断点处暂停使用调试工具栏控制执行继续F5继续执行直到下一个断点单步跳过F10执行当前行不进入方法单步进入F11进入当前行的方法单步跳出ShiftF11跳出当前方法观察变量面板中的值变化调试时特别有用的功能条件断点右键点击断点可以设置条件日志点不暂停程序的情况下输出日志监视表达式持续观察特定表达式的值6. 打包与分发完成开发后你可能想将项目打包成可执行的JAR文件分享给他人。6.1 使用Maven打包在VSCode中打开终端Ctrl运行以下命令mvn packageMaven会在target目录生成JAR文件运行生成的JARjava -jar target/my-first-java-app-1.0-SNAPSHOT.jar6.2 创建可执行JAR带依赖如果需要包含所有依赖修改pom.xmlbuild plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-assembly-plugin/artifactId version3.3.0/version configuration descriptorRefs descriptorRefjar-with-dependencies/descriptorRef /descriptorRefs archive manifest mainClasscom.yourname.myfirstjavaapp.App/mainClass /manifest /archive /configuration executions execution phasepackage/phase goals goalsingle/goal /goals /execution /executions /plugin /plugins /build然后运行mvn package会在target目录生成一个包含所有依赖的JAR文件。7. 进阶探索方向现在你已经掌握了Java项目的基本开发流程以下是一些可以继续探索的方向单元测试在src/test/java中编写JUnit测试图形界面尝试JavaFX或Swing创建桌面应用Web开发探索Spring Boot框架数据库连接学习JDBC或JPA多模块项目创建更复杂的项目结构VSCode的Java扩展还支持许多其他功能代码重构重命名、提取方法等代码导航转到定义、查找引用代码格式化统一代码风格Git集成版本控制你的项目在实际项目中遇到问题时可以充分利用VSCode的智能提示和文档查看功能将鼠标悬停在代码上或按F1查看文档。

相关文章:

JDK20安装后,除了‘Hello World’还能怎么玩?用VSCode快速搭建你的第一个Java项目

JDK20安装后,除了‘Hello World’还能怎么玩?用VSCode快速搭建你的第一个Java项目 当你成功安装JDK20并验证了环境变量配置后,打印"Hello World"可能已经无法满足你的探索欲望。作为现代Java开发者,我们更渴望立即投入…...

不只是抓包:用Fiddler在Android上‘伪造’数据,快速测试App的边界与异常场景

不只是抓包:用Fiddler在Android上‘伪造’数据,快速测试App的边界与异常场景 在移动应用测试领域,大多数工程师对Fiddler的认知停留在"抓包工具"层面——它能记录HTTP/HTTPS请求,帮助分析网络交互。但鲜有人意识到&…...

CentOS 8停服后,yum install报错‘Could not resolve host’的终极修复手册(附阿里云源修正)

CentOS 8停服后yum源失效的深度修复指南:从原理到实战 当你在终端输入yum install命令后看到Could not resolve host的红色报错时,这不仅仅是简单的网络问题——它标志着CentOS 8生命周期结束(EOL)带来的连锁反应正在影响你的系统。作为仍在维护CentOS 8…...

别再手动模拟时序了!深入理解STM32 FSMC如何“硬件级”简化外部SRAM访问

深入解析STM32 FSMC:硬件级SRAM访问优化实践 在嵌入式系统开发中,内存资源常常成为限制项目复杂度的瓶颈。当STM32内部SRAM不足以支撑大型应用时,外部SRAM扩展成为必选项。传统GPIO模拟时序的方法不仅代码臃肿,还存在性能瓶颈。本…...

从WiFi到SDR:如何为你的机器人集群挑选合适的“数传”硬件?(避坑指南与组网实测)

从WiFi到SDR:机器人集群通信硬件选型实战手册 当二十台自主移动机器人需要在500米半径的仓库内同步位置数据时,WiFi模块频繁掉线;当野外搜救集群需要跨越3公里峡谷传输高清图像时,常规数传模块集体失联——这些真实场景暴露出机器…...

系统运维实战:journalctl日志分析与故障排查指南

1. journalctl基础:从零开始掌握日志分析 刚接触Linux系统运维时,最让我头疼的就是排查系统问题。每次服务器出状况,面对/var/log下密密麻麻的日志文件总是一头雾水。直到发现了journalctl这个神器,我的运维效率直接翻倍。journal…...

Real Anime Z企业级运维:Prometheus+Grafana显存/延迟/吞吐量监控

Real Anime Z企业级运维:PrometheusGrafana显存/延迟/吞吐量监控 1. 项目背景与监控需求 Real Anime Z是基于阿里云通义Z-Image底座模型开发的高精度二次元图像生成工具,其核心特性包括BF16稳定精度、智能权重注入和双层显存优化方案。在企业级部署场景…...

以学代练:用竞赛真题学算法——二叉树

先上题目,出自蓝桥杯省赛真题题目描述给定一棵包含 N 个节点 的完全二叉树,树上每个节点都有权值。节点按照从上到下、从左到右的顺序依次编号为 A1​,A2​,…,AN​。现在需要把同一深度(同一层)的所有节点权值相加,求…...

避坑指南:ArcGIS中管网流向设置总出错?可能是你的‘源’和‘汇’用错了

ArcGIS管网流向分析:从原理到实践的深度避坑指南 在市政管网或河网分析中,流向判断是网络分析的基础,却也是许多GIS工程师踩坑的重灾区。你是否遇到过这样的场景:精心构建的几何网络,在执行流向分析时频繁报错&#xf…...

【进阶指南】Ant Design Select 下拉框数据全解析:从 value、label 到自定义属性的高效获取

1. 理解Ant Design Select的核心数据流 当你第一次接触Ant Design的Select组件时,可能会觉得它就是个简单的下拉选择器。但实际开发中,特别是处理复杂业务表单时,我们往往需要获取的不仅仅是value值。想象一下这样的场景:用户选择…...

Pandas性能瓶颈?Polars大数据处理实战优化

1. 项目概述:当Pandas遇上性能瓶颈三年前处理一个800万行的CSV文件时,我的Jupyter笔记本风扇狂转了15分钟。当时我就意识到:Pandas虽好,但在大数据场景下就像用瑞士军刀砍大树。这就是为什么后来我发现了Polars——这个用Rust编写…...

告别SDK,拥抱Vitis:在PYNQ_Z2上完成从Block Design到Hello World的完整迁移教程

从SDK到Vitis:PYNQ_Z2开发环境迁移实战指南 在FPGA开发领域,Xilinx工具链的演进正经历着一次重大变革——经典的SDK开发环境正逐步被功能更强大的Vitis平台取代。对于使用PYNQ_Z2这类热门开发板的工程师来说,掌握新工具链的迁移方法已成为当务…...

Phi-3-mini-4k-instruct-gguf开源可部署优势:完全离线运行无网络依赖实测

Phi-3-mini-4k-instruct-gguf开源可部署优势:完全离线运行无网络依赖实测 1. 模型简介 Phi-3-Mini-4K-Instruct是一个38亿参数的轻量级开源模型,采用GGUF格式提供。作为Phi-3系列的一员,这个模型经过专门训练,能够执行精确的指令…...

量子计算中的块编码技术与Cobble编译器优化

1. 量子计算中的块编码基础1.1 块编码的核心概念块编码(Block Encoding)是量子计算线性代数中的关键技术,它允许我们将经典矩阵高效地嵌入量子态空间。简单来说,块编码就像是为经典数据建造一座通往量子世界的桥梁。想象你有一本厚重的纸质书&#xff08…...

CircuitGuard防御LLM在RTL代码生成中的记忆风险

1. 项目概述:CircuitGuard防御LLM在RTL代码生成中的记忆风险在硬件设计自动化领域,大型语言模型(LLMs)正逐渐成为RTL代码生成的重要工具。然而,这些模型在训练过程中会不可避免地记忆部分训练数据,当这些数…...

告别盲目移植!Linux内核通用驱动搞定国产YT8511 PHY芯片的完整指南

国产YT8511 PHY芯片的通用驱动适配实战指南 在嵌入式开发领域,遇到国产芯片时,许多工程师的第一反应往往是寻找官方驱动进行移植。这种思路虽然稳妥,但往往耗时费力。以裕太微电子的YT8511千兆PHY芯片为例,其实Linux内核自带的通用…...

从IPv4到IPv6:在华为eNSP上迁移静态路由配置,你需要知道的几个关键差异点

从IPv4到IPv6:华为eNSP静态路由迁移实战指南 如果你已经熟练掌握了华为设备上IPv4静态路由的配置,第一次在eNSP中配置IPv6静态路由时,可能会感到既熟悉又陌生。就像一位习惯右手写字的人突然尝试用左手——基础原理相通,但具体操作…...

RRAM加速器中的位级稀疏性与相似性优化技术

1. 项目背景与核心挑战在深度学习领域,计算效率和能耗问题一直是制约神经网络大规模部署的关键瓶颈。存内计算(Compute-in-Memory, CIM)架构通过将计算单元与存储单元融合,有效减少了数据搬运带来的能耗开销。其中,基于…...

国产化OA如何实现PPT动画在CKEditor中的无缝转存?

山东某软件公司前端工程师需求实现记录:基于CKEditor4的文档处理集成方案 一、需求拆解与技术选型(Vue2 CKEditor4 JSP) 核心功能确认: 编辑器增强需求: Word粘贴净化(保留核心样式,去除冗余…...

real-anime-z Web界面深度解析:7860端口服务的UI功能区与技术栈说明

real-anime-z Web界面深度解析:7860端口服务的UI功能区与技术栈说明 1. 平台概述与技术架构 real-anime-z是一款专为二次元插画创作设计的文生图AI镜像,能够快速生成高质量的动漫风格图像。该镜像集成了先进的AI模型和优化后的Web界面,让用…...

微信小程序上传图片到Java/PHP/Node.js后端:chooseMedia选图+Base64编码+接口联调避坑指南

微信小程序图片上传全链路实战:从chooseMedia到多后端处理 在移动应用开发中,图片上传是一个看似简单却暗藏玄机的功能点。微信小程序作为轻量级应用平台,其图片上传机制经历了多次迭代,从早期的wx.chooseImage到现在的wx.chooseM…...

Real-Anime-Z实战案例:用real-anime-z_7生成赛博朋克风角色图,附完整参数配置

Real-Anime-Z实战案例:用real-anime-z_7生成赛博朋克风角色图,附完整参数配置 1. 项目介绍 Real-Anime-Z是一款基于Stable Diffusion的写实向动漫风格大模型,由Devilworld团队开发。它完美融合了写实与动漫两种风格,创造出独特的…...

别再只看P值了!代谢组学数据解读避坑指南:PCA、PLS-DA、OPLS-DA结果到底怎么看?

代谢组学数据分析实战:从PCA到OPLS-DA的深度解读与避坑手册 当你第一次拿到代谢组学分析报告时,那些五彩斑斓的PCA得分图、密密麻麻的VIP值列表和令人费解的S-plot图是否让你感到无所适从?作为生物学或医学研究者,我们往往更关注实…...

企微运营保姆级攻略

引言当下,企微私运营已经从粗放式引流获客,进入体系化搭建、自动化运维、数据化迭代、合规化运营的精细化阶段。很多企业投入大量精力做企微私域却没有效果,核心问题并非引流不足,而是缺乏系统化运营思维:账号架构混乱…...

深入解析Si24R1四大工作模式:从关断到收发,如何实现超低功耗设计

1. Si24R1无线收发器概述 Si24R1是一款基于nRF24L01芯片设计的2.4GHz低功耗无线收发器模块,在嵌入式无线通信领域有着广泛应用。我第一次接触这个模块是在一个智能农业监测项目中,当时需要实现传感器节点间的无线数据传输,经过多方对比最终选…...

AIoT边缘计算在南极苔藓生态监测中的创新应用

1. 南极苔藓监测项目的背景与意义南极洲作为地球气候系统的关键调节器,其生态变化对全球气候具有深远影响。传统上,科学家们主要关注南极周边海洋的二氧化碳吸收能力和巨大冰川的反射作用,而忽视了这片大陆上另一个重要但微小的生态系统——苔…...

从24V到3.3V:实战解析DCDC、LDO与电压基准的选型与应用电路

1. 电源转换电路的基础认知 第一次接触电源设计时,我被各种电压转换搞得晕头转向。24V、12V、5V、3.3V...这些电压就像电路板上的"方言",每个模块都在用不同的"语言"交流。后来才明白,电源转换电路就是这些"方言&qu…...

FLUX.1-Krea-Extracted-LoRA新手教程:Streamlit WebUI界面功能全解析

FLUX.1-Krea-Extracted-LoRA新手教程:Streamlit WebUI界面功能全解析 1. 快速入门指南 1.1 镜像部署与访问 让我们从最简单的部署开始。在云平台找到FLUX.1-Krea-Extracted-LoRA镜像后,点击"部署实例"按钮。你会看到实例状态从"创建中…...

自适应Hopf振荡器调参避坑指南:如何让外骨骼步态生成更平滑、更稳定?

自适应Hopf振荡器调参避坑指南:如何让外骨骼步态生成更平滑、更稳定? 外骨骼机器人的步态生成一直是控制领域的核心挑战。当工程师们尝试将自适应Hopf振荡器应用于实际项目时,常会遇到输出波形抖动、收敛速度慢等问题。本文将从工程实践角度&…...

ZEROSIM框架:高精度快速模拟电路仿真的突破

1. ZEROSIM框架概述模拟电路设计长期以来面临着效率与精度难以兼得的困境。传统SPICE仿真虽然精度高,但每次仿真动辄需要数小时;而现有的机器学习代理模型往往局限于特定电路拓扑,缺乏泛化能力。ZEROSIM的诞生正是为了解决这一核心矛盾——它…...