ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Eclipse配置Spring Boot开发环境:JDK、Maven与STS插件全攻略

Eclipse配置Spring Boot开发环境:JDK、Maven与STS插件全攻略 1. 环境准备Eclipse版本、JDK与Spring Tools插件1.1 Eclipse版本怎么选先说一句Eclipse配Spring版本千万别乱选。很多初学者直接搜“eclipse最新版”下载装完发现界面不对、插件装不上、项目向导缺失折腾半天全白费。我的建议是选Eclipse IDE for Enterprise Java and Web Developer这个发行版它内置了Web开发、Maven、Git等常用功能Spring项目需要的东西基本都有。那些什么Eclipse IDE for Java Developers、Eclipse Classic之类的版本要么缺Web工具要么缺Maven集成配起Spring来全是坑。版本编号方面常见的有2021-094.21.0、2022-12、2023-03、2023-12等选哪个都行但有一点必须记住版本越新对JDK的要求越高。比如Eclipse 2023-12至少需要JDK 17才能运行而你如果只是为了跑一个教学用的Spring MVC项目JDK 8就能胜任反而2021-09这种老版本更省心。还有个细节下载时有“Windows x86_64”和“Windows aarch64”之分现在绝大多数电脑是x86_64直接选这个就行。下载方式有两种一种是下载安装器Eclipse Installer它会引导你选择发行版并自动安装另一种是直接下载压缩包解压就能用。我个人更推荐压缩包方式因为Eclipse本身免安装压缩包解压后放在任意目录就能运行重装系统也不怕不像安装器那样会写一堆注册表配置。1.2 JDK版本选择与国内镜像下载Eclipse配置SpringJDK是最容易被忽略的一环。Spring Boot 2.x要求JDK 8Spring Boot 3.x要求JDK 17如果你用的是JDK 21完全没问题但如果还在用JDK 7那连编译都过不了。JDK推荐用Eclipse Temurin原AdoptOpenJDK它是目前社区最活跃的OpenJDK发行版。下载时有个痛点官网默认域名在海外速度慢到怀疑人生。解决办法是用国内镜像比如清华源、阿里源都有Temurin的镜像仓库。以清华镜像为例路径大致是https://mirrors.tuna.tsinghua.edu.cn/Adoptium/进去后按版本号和操作系统选择对应的压缩包或安装包。安装JDK后环境变量必须配置。右键“此电脑”-“属性”-“高级系统设置”-“环境变量”新增一个系统变量JAVA_HOME值为JDK安装目录比如C:\Program Files\Eclipse Adoptium\jdk-17.0.10然后在Path变量中新增%JAVA_HOME%\bin。配完之后命令行输入java -version能看到版本信息才算成功。还有一个易错步骤Eclipse默认使用的是JAVA_HOME指定的JDK但如果你在Eclipse里创建了多个JRE环境实际编译时会以Eclipse里选择的JRE为准。所以项目右键 -Properties-Java Build Path-Libraries确认JRE System Library指向的是你安装的JDK版本而不是Eclipse自带的JRE。这一步非常关键很多人环境变量配好了项目依然报错就是这里没检查。1.3 Spring Tools 4插件安装与验证Eclipse本身不直接支持Spring项目的快捷创建需要安装Spring Tools 4即STS插件Eclipse版本叫Spring Tools 4 for Eclipse。安装方式有两种。第一种是在线安装打开Eclipse点菜单栏Help-Eclipse Marketplace搜索“Spring Tools 4”找到“Spring Tools 4 (aka Spring Tool Suite 4)”点击安装。这个方式最省事但有个体验问题——下载慢经常卡在进度条甚至长达十几分钟没反应。不是你网不好是插件包确实大加上Eclipse Marketplace有时候连接不稳。第二种是离线安装适合在线安装总是失败的情况。先从Spring官网下载离线安装包文件通常是zip格式。然后在Eclipse里执行Help-Install New Software...点Add-Archive选择下载好的zip包勾选出现的组件一路Next。离线包的好处是安装过程稳定缺点是需要自己核对插件和Eclipse版本的兼容性一般官网会标明“Spring Tools 4 requires Eclipse 2020-06 or newer”之类的说明照着选就行。安装完成后Eclipse会提示重启。重启后怎么验证插件生效看两个地方一是Window-Preferences里应出现Spring相关的配置项二是项目右键菜单里会多出Spring选项New-Project向导里也会出现“Spring Starter Project”这类条目。这两个信号同时具备说明插件装好了。2. 为什么还在用Eclipse配Spring一个老组合的现状2.1 谁还在用Eclipse先说个现实情况现在新项目基本都转IDEA了社区里讨论最多的也是IDEA的各种骚操作。但在学校里、银行外包、传统企业、以及维护老项目的时候Eclipse依然是主力。我见过不少老系统的代码库Spring MVC XML配置 web.xml整套东西从2015年跑到现在。这种项目你用IDEA打开也能跑但团队成员都用Eclipse你一个人用IDEA组内协作多少会有些别扭。还有就是很多高校的实验课和毕业设计教程、课件、演示视频清一色是Eclipse老师要是不会IDEA反而帮不上忙学生硬着头皮用IDEA问问题得到的答案基本是“你换成Eclipse试试”。所以不用纠结“为什么还有人用Eclipse”对于特定群体来说它不是选择问题而是环境问题。2.2 配置Spring前必须搞懂的三个概念Eclipse配Spring之所以让新手困惑根源在于“配置”这个词包含了好几层含义很多人把三层混在一起。第一层是JDK环境。Spring项目的运行离不开JVMJDK就是Spring的“宿主环境”。你要跑Spring Boot 3JDK 17以下直接不给启动要跑老Spring MVC项目JDK 8是最稳妥的太高反而可能出现兼容性问题。第二层是依赖管理。Spring全家桶的jar包数量极其庞大手搓classpath几乎不可能。Maven和Gradle就是干这个的通过坐标自动拉取jar包。Eclipse内置了Maven插件m2e这一步看似不起眼却是整个配置的核心。第三层是配置方式。Spring的配置演进大致经历了三个阶段纯XML阶段applicationContext.xml、注解 XML混合阶段Service 扫描包配置、以及Spring Boot的自动配置阶段application.yml 起步依赖。Eclipse里跑哪个阶段的项目决定了你要配的东西是什么。跑老项目你要关注web.xml和Spring XML文件的加载路径跑Spring Boot你要关注的是Maven依赖是否能下载、启动类是否能跑通。这三层如果心里没数遇到报错就会到处乱试最后越改越崩。3. Maven配置与第一个Spring Boot项目的完整搭建3.1 Maven本地仓库和国内镜像配置Eclipse自带的Maven其实够用但默认中央仓库在国外下载依赖慢得像蜗牛。强烈建议配置国内镜像源这一步谁做谁知道。找到Maven的全局配置文件settings.xml位置在Maven安装目录的conf目录下如果自己装了Maven或者在用户目录的.m2文件夹下Eclipse内置Maven默认会生成一份。建议在用户目录下新建.m2目录并放一份自己的settings.xml因为这样不会影响全局配置重装Eclipse也能保留。在settings.xml的mirrors节点中加入阿里云镜像mirror idaliyunmaven/id mirrorOfcentral/mirrorOf name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url /mirrormirrorOf写central表示只对中央仓库镜像这样第三方私有仓库不受影响。然后到Eclipse里执行Window-Preferences-Maven-User Settings把Global Settings和User Settings都指向这个settings.xml点Apply。配完后创建Spring Boot项目时依赖下载速度会提升一个量级。实测阿里源和中央仓库的速度差距一个依赖可能是10秒和一分钟的区别整个项目几十个依赖累积下来差距就很可观了。3.2 创建Spring Boot项目的两种方式第一种利用STS插件创建。Eclipse里选File-New-Other输入“Spring”搜索选择“Spring Starter Project”点Next。这一步会看到项目配置界面Group填com.exampleArtifact填项目名Java Version选你安装的JDK版本比如17或21Packaging选Jar。再点Next选择依赖比如Web项目勾选“Spring Web”会生成一个带SpringBootApplication启动类的小项目。第二种从Spring官网生成后导入。打开https://start.spring.io在网页上配置项目信息、选择Spring Boot版本和依赖点Generate生成zip包。解压后在Eclipse里File-Import-Existing Maven Projects选择解压后的目录Eclipse会自动识别pom.xml并导入。两种方式各有优劣STS向导创建的项目和Eclipse整合度更高导入老项目时也更顺手官网生成的项目版本更新有时候STS默认的Spring Boot版本比较老官网可以选到最新稳定版。我的习惯是自己写新项目用STS向导依赖STS已经帮我们配好了从网上下载模板或教学项目则用Import方式保证项目原样保留。导入过程有个关键点要在Eclipse里右键项目 -Maven-Update Project执行一次强制更新才能保证依赖列表和本地的classpath一致。这一步不执行即使pom.xml配了依赖Eclipse也经常不认识。3.3 跑通第一个接口项目创建好后先别急着写业务代码先确保一个最简单的接口能跑通。看下自动生成的pom.xml确认里面至少有以下内容parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.2.0/version relativePath/ /parent dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency /dependenciesSpring Boot 3.2.0对应JDK 17如果你的JDK是8pom文件里就只能选2.x版本的parent比如2.7.18。这个版本匹配很关键选错版本启动直接报UnsupportedClassVersionError。启动类主类长这样package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }然后写一个测试接口package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; RestController public class HelloController { GetMapping(/hello) public String hello() { return Hello from Eclipse Spring; } }在Eclipse里右键主类 -Run As-Spring Boot App控制台出现“Tomcat started on port 8080”之类的日志就说明跑通了。浏览器访问http://localhost:8080/hello看到字符串输出项目就成功配置完成。如果8080端口被占用可以在src/main/resources下的application.properties里改端口server.port8081这一步的几个坑要提前说Eclipse里如果没有“Spring Boot App”运行选项回查STS插件是否安装成功控制台跑一半没反应多半是依赖没下载完整执行Maven Update Project重新拉取启动报Port 8080 was already in use要么改端口要么找到占用进程结束它。4. 实操中高频问题和排查技巧实录4.1 找不到或无法加载主类 org.apache.catalina.startup.Bootstrap这个报错在热词里出现了也是Eclipse里跑老Spring MVC项目最经典的翻车现场。当年我初学Spring MVC照着视频配Tomcat一运行就弹出“找不到或无法加载主类 org.apache.catalina.startup.Bootstrap”当场怀疑人生。后来才明白这个错误的根源在于Tomcat运行时的classpath没有配好。Eclipse里跑Web应用有两种方式一种是Spring Boot内嵌Tomcat直接在配置类里启动这个问题较少出现另一种是传统Spring MVC项目需要外置的Tomcat通常是Tomcat 8或9Eclipse的Server Runtime要单独配置。排查步骤从易到难第一步检查Tomcat的安装目录。确认下载的Tomcat解压目录里确实有bin/bootstrap.jar和bin/tomcat-juli.jar。很多人下载的是错误的发行包比如Tomcat的WindowsService安装版它在Eclipse里反而不能用Server容器加载要下载zip版。第二步检查Eclipse里的Server Runtime配置。Window-Preferences-Server-Runtime EnvironmentsAdd一个Tomcat指向你的Tomcat解压目录。然后在Servers视图如果找不到这个视图Window-Show View-Other-Servers里新建Server把项目Add进去这样运行时才会把项目打成war包部署到Tomcat的webapps目录。第三步清理项目重新编译。老项目经常出现.class文件找不到的情况右键项目 -Clean然后Project-Build Project确保class输出路径正确。如果项目是Maven管理的还要确认pom.xml里的packaging是war而不是jarpackagingwar/packaging这个维度的排查说到底是让Eclipse里的“部署路径”和Tomcat的“启动类”对齐。理解了这一点这种报错就再也不会困扰你。4.2 只编译本次改动的代码增量编译设置有一个高频痛点——Eclipse默认自动编译整个项目一个大项目每次改一行代码编译要等半分钟。热词里有人问“eclipse中怎么设置只编译本次改动的代码”说明很多人没找到正确的门路。Eclipse的编译机制其实分两层全量编译和增量编译。默认情况下只要开启了Project-Build AutomaticallyEclipse会监控文件变更自动执行增量编译——理论上只编译改动的类。但问题出在“自动”这个机制上如果设置了Clean或者Maven的Update Project就会强制全量编译所以很多人感觉Eclipse一直在全量编译。实操建议大项目里点掉Project-Build Automatically的勾选改成手动编译。改完代码后按快捷键Ctrl BEclipse只编译有变更的模块。还有一种场景我只想编译某个具体类单独打开这个文件右键 -Compile不同Eclipse版本位置略有差异系统会把该类及其依赖关系重编一遍。另外一个影响编译速度的因素是Maven多模块项目。Eclipse里勾选了Window-Preferences-Maven-Automatically update project configuration之后pom.xml一改动就会触发全量刷新。这个选项建议关掉pom改了再手动右键项目 -Maven-Update Project可控性更高。4.3 中文乱码和导入老项目的编码问题官网生成的项目默认UTF-8但国内老项目通常是GBK编码。导入后最直观的问题就是中文注释乱码、Properties文件乱码。处理方法Window-Preferences-General-Workspace把Text file encoding改为UTF-8。同时Window-Preferences-General-Content Types把Java文件、Properties文件、XML文件的默认编码都调整为UTF-8。改完重开Eclipse刷新项目乱码才会消失。还有个隐蔽的坑pom.xml里Maven编译时用的编码格式没指定导致生产环境构建出来的包中文乱码。建议在pom里加上properties project.build.sourceEncodingUTF-8/project.build.sourceEncoding /properties这行配置比Eclipse界面里的设置更重要——因为Eclipse里的编码只影响IDE查看Maven编译时才真正决定class文件里的字符串是什么编码。两者匹配才最稳妥。4.4 离线汉化包的安装与版本匹配关于“eclipse 2021-09 4.21.0 离线汉化”这类需求我的态度是不建议汉化。Eclipse菜单就那么几个词File、Edit、Window、Run查一次翻译就记住了。汉化包反而带来三个问题和版本不匹配导致Eclipse启动异常汉化后很多教程示例的菜单名对不上反而增加沟通成本新插件安装后菜单混排中英文混杂更难看。但如果你确实需要离线汉化原理上也简单。到Eclipse Babel项目官网下载对应版本的汉化包通常是BabelLanguagePack-eclipse-zh_4.21.0.zip这样的文件名。安装方式和装STS插件一样Help-Install New Software...-Add-Archive选zip包勾选安装。装完重启基本界面就是中文了。还有少数插件没有汉化属于正常现象。关键提醒汉化包必须和Eclipse的版本号精确匹配。比如Eclipse 4.21.0就要用对应4.21.0的汉化包用4.20或4.22的会出现奇怪的显示问题。下载前在Babel的下载列表里看清楚版本号不要只看年份。4.5 导入项目时的依赖下载和Maven更新问题最后说一个导入项目的共性坑。不管是Git克隆下来的项目还是同学拷给你的压缩包导入Eclipse后都会遇到“红色叉号一堆、jar包全是空、项目根本编译不了”的情况。最核心的原因就是Maven没有下载依赖或者依赖下载不完整。处理流程我走了一遍又一遍现在几乎成肌肉记忆了第一步确认settings.xml里的镜像源是配置好的阿里云/清华源任选。这一步不配之后的每一次下载都会让你怀疑人生。第二步导入项目后右键项目 -Maven-Update Project弹窗里勾选Force Update of Snapshots/Releases然后确认执行。强制更新会重新解析所有依赖并下载缺失部分。第三步如果仍然报错点开Problems视图看具体错误。常见的有Cannot read artifact descriptor、Missing artifact xxx这种时候优先检查网络或者手动到Maven仓库目录默认在C:\Users\用户名\.m2\repository把对应路径的.lastUpdated文件删掉再执行更新。还有一个老生常谈Eclipse中的Maven默认没有开启下载源码如果你导入项目后看不到源码包在Window-Preferences-Maven里勾选Download Artifact Sources和Download Artifact JavaDoc再执行Update Project就能看到源码了。这个对看第三方库的底层实现很有帮助值得开。5. 几个再深入的配置细节5.1 Spring Boot 3和老版本Spring MVC共存的项目结构现在很多电脑上同时存在Spring Boot新项目和Spring MVC老项目。Eclipse完全能共存但要理清楚Spring Boot项目通常是Maven多模块或单模块结构直接作为自包含应用运行而Spring MVC老项目往往依赖Deployment Assembly里的WebContent或src/main/webapp目录。如果你发现导入的老项目在Eclipse里没有Deployment Assembly的部署配置可以在项目右键 -Properties-Deployment Assembly里Add把src/main/webapp添加为/把Maven依赖添加为/WEB-INF/lib。这一步是让Tomcat能正确把项目打包并加载Spring配置的关键很多老项目从IDEA换到Eclipse后部署失败就是Deployment Assembly没有配置。5.2 Eclipse里多模块Spring项目的启动顺序如果你的项目不是单体的Spring Boot应用而是多个模块比如soa项目里拆了common、dal、service、web模块Eclipse里跑起来还要注意Maven Reactor机制。右键父工程 -Run As-Maven InstallEclipse会按照模块依赖顺序逐个打包这一步非常重要。启动还是老规矩在web模块里找启动类右键Run As-Spring Boot App。但如果web模块依赖的其他模块代码改了先要在被依赖模块上执行Maven Install把最新的类装进本地仓库否则启动时用的还是旧class。这个细节真的很反直觉很多新手在这里卡住代码明明改了也编译成功了但一运行程序就是旧行为。原因不是Eclipse的问题而是Maven多模块之间的依赖是基于本地仓库的jar包不是基于工作空间源码。解决方法是依赖模块也加入Eclipse的依赖管理确保运行时能串联或者每次修改后都重新Install一次。5.3 日志输出去向何方Spring Boot在Eclipse里跑起来后很多人的第一反应是日志打印到哪里去了控制台Console当然会显示但问题是Eclipse的Console管理有时候很混乱多个项目同时启动会互相覆盖。建议做法Run-Run Configurations在对应的Spring Boot运行配置里切到Common选项卡把Console Encoding改成UTF-8免得中文日志变乱码。同时在Log Output区域可以勾选Output File把日志落盘到固定文件排查问题比控制台翻旧日志舒服得多。如果你想用Logback把Spring的日志输出成文件在src/main/resources下添加logback-spring.xml文件即可。配置里可以按级别做按天文件滚动configuration appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy fileNamePatternlogs/app.%d{yyyy-MM-dd}.log/fileNamePattern /rollingPolicy encoder pattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern /encoder /appender root levelinfo appender-ref refFILE/ /root /configuration这样控制台和文件双输出既能实时看也能留底排查。6. 我的几点实操心得6.1 别把Eclipse当IDE用要把它当构建工具链的壳Eclipse配Spring这件事本质上不是在学Eclipse而是在理清一条链源码从哪个目录来编译后输出到哪个目录依赖从哪里下载部署到哪里启动。Eclipse只是把这一系列动作集成到了图形界面里。所以排查问题时不要只在Eclipse界面里打转。命令行里执行mvn -v、java -version、mvn clean package这些独立验证往往比看Eclipse的报错弹窗更高效。Eclipse的报错信息经常是一种“聚合”结果背后真实原因可能早就被吞掉了而命令行输出更原始、更完整。6.2 配置重点按性价比排序如果只能记住三件事按照投入产出比我这样排第一把Maven镜像源配好这决定能否顺利建起依赖体系第二把JDK版本和项目编译级别对好这决定项目能否编译运行第三把STS插件装好这决定你是否能用上Spring Starter向导、Spring Boot Dashboard、Spring XML配置语法提示这些省力工具。至于汉化包、彩色主题、字体美化这些锦上添花的东西放在最后。有时间就折腾没时间直接跳过完全不影响你搭好环境。6.3 用一个小Demo验证环境每次换电脑、换Eclipse版本、换JDK我不会直接拿业务项目来试验而是花五分钟建一个Spring Boot Hello项目跑一个/hello接口。这个项目就是环境是否OK的“健康检查”。一旦这个Demo从创建到访问全部跑通就说明JDK、Maven、STS插件、端口、路径这些环节都没问题。在这个前提下再去导入老项目、调整Tomcat部署、处理编码问题就有底了。否则一边配置老项目一边排查基础环境问题堆在一起永远不知道哪一环是真正的原因。换个电脑配环境时这个习惯帮我少走了无数次弯路。6.4 多说一句关于Spring框架本身配置只是开始真正要写好Spring应用还是要懂框架内部的一些运转逻辑。网上关于Spring的热词我一直有关注比如“Spring三级缓存原理”说到底是理解单例Bean如何被创建、循环依赖如何被解决。配置跑通之后建议花时间读一读容器初始化的过程理解BeanFactory和ApplicationContext的区别理解BeanPostProcessor的扩展点这才是从“会配”走向“会写”的关键一步。环境搭好了后面的路自然就越走越宽了。
返回列表