You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven项目编译成功但运行时提示Gson/OkHttp包不存在问题咨询

问题

通过OpenAPI YML文件自动生成的APIClient类,项目编译成功,但运行时抛出以下错误:

C:\jag\jag-rsbc-digital-forms-vips-integration-17\jag-vips-client\src\jag-vips-client\target\generated-sources\openapi\src\main\java\ca\bc\gov\open\jag\ordsvipsclient\api\DisclosureApi.java:25:31
java: package com.google.gson.reflect does not exist
C:\jag\jag-rsbc-digital-forms-vips-integration-17\jag-vips-client\src\jag-vips-client\target\generated-sources\openapi\src\main\java\ca\bc\gov\open\jag\ordsvipsclient\api\DisclosureApi.java:93:19
java: package okhttp3 does not exist

POM.xml中已引入对应依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.11.0</version>
</dependency>

另一个digitalform ords客户端使用相同代码可正常运行,对比两个POM文件无差异,请问为何会出现运行时错误?

可能的原因及解决办法
  • 依赖范围异常:检查这两个依赖是否被设置了scope(比如provided)。如果是provided,编译阶段会生效,但运行时不会被打包到产物里,自然找不到包。直接移除不必要的scope标签,保持默认的compile范围即可。
  • Maven缓存损坏:本地Maven仓库的依赖文件可能损坏或未完整下载。执行以下命令清理缓存并重新拉取所有依赖:
    mvn clean install -U
    
  • 模块依赖传递问题:如果自动生成的代码在独立模块(比如target/generated-sources/openapi对应的子模块),要确认主模块是否正确引入了该生成模块,同时检查生成模块的POM是否继承了主POM的依赖,有没有漏加gson和okhttp的配置。
  • IDE缓存干扰:就算Maven配置没问题,IDE的缓存也可能导致识别异常。可以按以下方式清理:
    • IntelliJ IDEA:点击File -> Invalidate Caches...,选择「Invalidate and Restart」
    • Eclipse:点击Project -> Clean,右键项目选择Maven -> Update Project
  • 打包配置排除依赖:检查打包插件(比如maven-jar-plugin、maven-war-plugin)的配置,有没有不小心排除了gson或okhttp,确保这两个依赖被包含在最终的JAR/WAR包中。
  • OpenAPI生成器版本不一致:虽然另一个项目正常,但当前项目用的OpenAPI生成器版本可能和它不同,导致生成的代码对依赖的要求有差异。核对两个项目的OpenAPI生成器插件版本,调整为相同版本后重新生成代码。

内容的提问来源于stack exchange,提问作者jianmin tu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 20:55:19