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

IntelliJ中Java调用API获取实时汇率报错求助

问题:Java调用汇率API时出现NoClassDefFoundError: okio/BufferedSource

我正在开发带GUI的货币转换器,调用Apilayer汇率API时运行报错,代码如下:

import java.io.*;
import okhttp3.*;

public class Main {
    public static void main(String []args) throws IOException{
        OkHttpClient client = new OkHttpClient().newBuilder().build();

        Request request = new Request.Builder()
                .url("https://api.apilayer.com/currency_data/convert?to=BGN&from=USD&amount=1")
                .addHeader("apikey", "R2EQE6ev2c2KWFR0GID6lKqvGFD4nrP2")
                .method("GET", null)
            .build();
    Response response = client.newCall(request).execute();
    System.out.println(response.body().string());
}
}

运行时抛出错误:

Exception in thread "main" java.lang.NoClassDefFoundError: okio/BufferedSource
    at okhttp3.internal.Util.<clinit>(Util.java:51)
    at okhttp3.OkHttpClient.<clinit>(OkHttpClient.java:126)
    at Main.main(Main.java:7)
Caused by: java.lang.ClassNotFoundException: okio.BufferedSource
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 3 more

浏览器在线演示可以正常运行,但IntelliJ中报错,已经修正了.method("GET", })为.method("GET", null)解决编译问题,但运行时错误依然存在。


错误原因

这个报错是因为只引入了OkHttp核心库,却缺少它依赖的Okio库。OkHttp底层靠Okio处理IO操作,运行时找不到Okio的类就会抛出这个错误。

解决方案

根据你使用的构建工具,补充完整依赖:

1. Maven项目

在pom.xml中添加以下依赖:

<!-- OkHttp核心库 -->
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version> <!-- 可替换为最新稳定版 -->
</dependency>
<!-- OkHttp必需的Okio依赖 -->
<dependency>
    <groupId>com.squareup.okio</groupId>
    <artifactId>okio</artifactId>
    <version>3.6.0</version> <!-- 版本需与OkHttp匹配 -->
</dependency>

2. Gradle项目

在build.gradle中添加:

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.12.0'
    implementation 'com.squareup.okio:okio:3.6.0'
}

3. 手动导入JAR包

如果没使用构建工具:

  • 下载OkHttp和Okio的JAR包
  • 打开IntelliJ,右键项目 → Open Module Settings → Libraries → 点击+号,导入下载好的两个JAR包
  • 执行Build → Rebuild Project重新构建项目

内容的提问来源于stack exchange,提问作者Kamen Georgiev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:40:42