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

本地Maven构建Java项目遇SnappyError问题求助

解决Snappy-Java在Java 17下的UNSUPPORTED_PLATFORM错误

核心原因

Java 16及以上版本移除了java.nio.Buffer中address字段的直接访问权限,而旧版snappy-java的纯Java实现依赖该字段;同时你的项目存在依赖冲突:pom.xml声明的是1.1.8.4,但实际运行时加载的是1.1.7.3,旧版本未适配Java 17。

有效解决步骤

1. 彻底修复依赖冲突

在pom.xml中锁定snappy-java版本,并排除其他依赖引入的旧版本:

<dependencyManagement>
    <dependencies>
        <!-- 锁定适配Java 17的snappy-java版本 -->
        <dependency>
            <groupId>org.xerial.snappy</groupId>
            <artifactId>snappy-java</artifactId>
            <version>1.1.9.1</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<!-- 项目依赖中明确引入并排除旧版本 -->
<dependencies>
    <dependency>
        <groupId>org.xerial.snappy</groupId>
        <artifactId>snappy-java</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.xerial.snappy</groupId>
                <artifactId>snappy-java</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

执行Maven命令清理并重新构建:

mvn clean install -U

2. 升级到适配Java 17的版本

优先使用1.1.9.1及以上版本,这些版本专门修复了Java 16+下的UNSUPPORTED_PLATFORM错误,无需额外JVM参数。

3. 临时应急方案(不推荐长期使用)

如果暂时无法升级版本,可在Maven构建或项目启动时添加JVM参数,允许访问内部API:

# Maven构建时添加参数
mvn clean install -Dmaven.compiler.args="--add-opens java.base/java.nio=ALL-UNNAMED"

# 项目启动时添加参数
java --add-opens java.base/java.nio=ALL-UNNAMED -jar your-project.jar

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:40:54