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

Ballerina原生构建UUID包出现int范围错误如何解决

修复Ballerina原生构建的uuid模块类型错误

错误原因

报错显示0x8000000000000000超出int类型范围,是因为uuid 1.3.0版本的代码中错误地将64位整数值当作32位int处理,同时当前使用的GraalVM Java17与Ballerina 2201.3.2及uuid 1.3.0的兼容性存在冲突。

修复步骤

1. 升级uuid模块版本

修改dependencies.toml中的uuid版本为兼容Ballerina 2201.3.2的新版本(如1.4.0,该版本已修复类型错误问题):

[[package]]
org = "ballerina"
name = "uuid"
version = "1.4.0"
dependencies = [
    {org = "ballerina", name = "crypto"},
    {org = "ballerina", name = "jballerina.java"},
    {org = "ballerina", name = "lang.int"},
    {org = "ballerina", name = "regex"},
    {org = "ballerina", name = "time"}
]
modules = [
    {org = "ballerina", packageName = "uuid", moduleName = "uuid"}
]

修改后执行bal update命令更新依赖。

2. 调整GraalVM版本为Java11

Ballerina 2201.3.2(Swan Lake Update 3)对Java11版本的GraalVM兼容性更好,且uuid模块的bala包基于Java11构建,因此修改Dockerfile中的GraalVM安装逻辑:

# 替换原构建阶段的GraalVM安装部分
RUN apt-get update && apt-get -y install wget curl build-essential libz-dev zlib1g-dev && \
    wget https://dist.ballerina.io/downloads/2201.3.2/ballerina-2201.3.2-swan-lake-linux-x64.deb && \
    dpkg -i ballerina-2201.3.2-swan-lake-linux-x64.deb && rm ballerina-2201.3.2-swan-lake-linux-x64.deb && \
    curl -sL https://get.graalvm.org/jdk >install-graalvm.sh && chmod a+x install-graalvm.sh && \
    # 指定安装Java11版本的GraalVM
    ./install-graalvm.sh --java-version 11 --version 22.3.1 && \
    export PATH="/src/graalvm-ce-java11-22.3.1/bin:$PATH" && export JAVA_HOME="/src/graalvm-ce-java11-22.3.1" && \
    bal build --native

3. 重新构建镜像

执行docker build -t myservice .重新构建镜像,验证错误是否解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:52:08