Windows10下Maven+Jetty运行Java应用遇503及UnknownHostException问题
Windows 10下运行9年历史Java应用的Spring Bean创建异常及503错误解决
执行命令mvn -Dluke.confdir=file://C:\ecoconfig\ecomodules-calculation.conf jetty:run时触发Spring Bean创建异常,根因是java.net.UnknownHostException: C。尝试修改路径格式(单反斜杠、加引号)无效,访问localhost:8080/和localhost:8080/index.html均返回HTTP 503服务不可用。已按前开发者说明填写配置文件,仅修改了jdbc.username、jdbc.password和jwt.secret,无Java开发经验。
环境信息
java -version输出:
openjdk version "1.8.0_392" OpenJDK Runtime Environment (Temurin)(build 1.8.0_392-b08) OpenJDK 64-Bit Server VM (Temurin)(build 25.392-b08, mixed mode)
javac -version输出:
javac 1.8.0_392
mvn -version输出:
Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae) Maven home: C:\Program Files\Maven\apache-maven-3.9.6 Java version: 1.8.0_392, vendor: Temurin, runtime: C:\Program Files\Java\jdk-8.0.392.8\jre Default locale: fi_FI, platform encoding: Cp1252 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
关键配置
- applicationContext.xml片段:
<util:properties id="propertyConfigurer" location="${luke.confdir}/ecomodules-calculation.conf" />
- 配置文件ecomodules-calculation.conf:
jdbc.driverClassName=org.postgresql.Driver jdbc.url=jdbc:postgresql://localhost:5432/ecomodules?currentSchema=ecomodules # Database username. Probably ecomodules. Configure as appropriate. jdbc.username=correct_username # Database user password. Configure as appropriate. jdbc.password=correct_password # Generate at least 256-bit key here # example using openssl command: # openssl rand -base64 32 # for convenience, here is one: /e+Azj4FkSAhlwtg0yyvcUPulrtxS66pRgvF04vNvvg= # do not use it for other than local dev environments since it's not a platform secret jwt.secret=7e+Azj4FkSAhlwtg0yyvcUPulrtxS66pRgvF04vNvvgt jwt.issuer=Luonnonvarakeskus jwt.cookieName=ECOMODULES_COOKIE jwt.ttl=P7D # SMTP service hostname for forgot password mechanism. smtprelay.ns.luke.fi in luke internal usage #spring.mail.host= #spring.mail.port=25
问题定位与解决步骤
核心问题
- 路径格式错误:
file://C:\ecoconfig\ecomodules-calculation.conf被Java误解析为主机名C,因为Windows下文件URL需要三个斜杠前缀(file:///),且盘符需用正斜杠,反斜杠未转义也会导致解析异常。 - 参数指向错误:
luke.confdir应该是配置文件所在的目录路径,但你直接指向了配置文件,结合applicationContext.xml的路径拼接规则,会生成无效路径。
修正启动命令
使用以下任一正确命令启动应用:
# 文件URL格式(规范写法) mvn -Dluke.confdir=file:///C:/ecoconfig jetty:run # 本地路径格式(更简洁,Spring会自动识别) mvn -Dluke.confdir=C:/ecoconfig jetty:run # 路径包含空格时添加引号 mvn -Dluke.confdir="C:/ecoconfig" jetty:run
后续验证
- 执行命令后,检查日志是否消除
UnknownHostException,确认配置文件加载正常。 - 确保PostgreSQL服务处于运行状态,数据库
ecomodules已创建,jdbc.username和jdbc.password配置正确。 - 应用启动成功后,
localhost:8080即可正常访问,503错误会自动消失。
内容的提问来源于stack exchange,提问作者jvkloc
相关产品推荐
相关产品推荐

