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

如何解决Java中java.lang.NoClassDefFoundError: KMappedMarker缺失错误

解决java.lang.NoClassDefFoundError: kotlin/jvm/internal/markers/KMappedMarker问题

核心原因

OkHttp3从4.x版本开始依赖Kotlin标准库的特定类,你手动添加的Kotlin Jar包大概率存在版本不匹配问题,或是缺失了包含KMappedMarker类的核心模块(该类属于kotlin-stdlib的一部分,但需与OkHttp3版本要求的Kotlin版本对应)。

具体解决步骤

1. 匹配OkHttp3与Kotlin版本兼容性

OkHttp3的版本和Kotlin版本存在对应要求:

  • 若使用OkHttp 4.x系列,需保证Kotlin stdlib版本不低于1.4.0
  • 若使用OkHttp 3.x系列,Kotlin版本兼容1.3.x及以上即可

先确认你当前使用的OkHttp3版本,再选择对应版本的Kotlin依赖包。

2. 完整添加Kotlin核心依赖(Eclipse环境)

不要仅添加单个Kotlin Jar,需将以下核心Jar包全部加入项目Build Path:

  • kotlin-stdlib-${version}.jar
  • kotlin-stdlib-common-${version}.jar
  • kotlin-stdlib-jdk7-${version}.jar(或jdk8,根据你的Java版本选择)
    所有Jar包需来自同一版本的Kotlin发行包,确保版本统一。

3. 检查并调整Build Path配置

右键项目 → Properties → Java Build Path:

  • 在Libraries标签下,确认所有Kotlin Jar包无感叹号(无缺失或路径错误)
  • 切换到Order and Export标签,将Kotlin Jar包移至OkHttp3 Jar包之前,保证类加载顺序正确

4. 无Kotlin依赖替代方案

如果不想引入Kotlin依赖,可以降级到OkHttp3 3.x的最终稳定版本(如3.14.9),该版本完全基于Java实现,不依赖Kotlin,只需替换项目中的OkHttp3 Jar包即可。

获取151个宝可梦名称的示例代码

解决依赖问题后,可使用以下代码实现需求:

import com.google.gson.Gson;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
import java.util.List;

// 对应PokeAPI返回的数据结构
class PokemonListResponse {
    private List<PokemonResult> results;

    public List<PokemonResult> getResults() {
        return results;
    }

    class PokemonResult {
        private String name;

        public String getName() {
            return name;
        }
    }
}

public class PokemonFetcher {
    public static void main(String[] args) {
        OkHttpClient client = new OkHttpClient();
        Gson gson = new Gson();
        String url = "https://pokeapi.co/api/v2/pokemon?limit=151";

        Request request = new Request.Builder().url(url).build();

        try (Response response = client.newCall(request).execute()) {
            if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

            PokemonListResponse pokemonList = gson.fromJson(response.body().string(), PokemonListResponse.class);
            for (PokemonListResponse.PokemonResult result : pokemonList.getResults()) {
                System.out.println(result.getName());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

额外注意

  • 确认Gson Jar包已正确添加到项目Build Path
  • 运行前再次核对所有依赖Jar的版本,避免版本冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:47:25