# centos部署指南

在 CentOS 7 或其他较旧版本的 Linux 系统中部署应用时,可能会遇到以下错误信息。这些错误本质上都源于 系统 GLIBC 版本过低:

Caused by: java.lang.UnsatisfiedLinkError: /root/smartjavaai_cache/pytorch/2.5.1-cpu-linux-x86_64/libc10.so: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /root/smartjavaai_cache/pytorch/2.5.1-cpu-linux-x86_64/libc10.so)
Caused by: java.lang.UnsatisfiedLinkError: /tmp/opencv_openpnp2647728894578271542/nu/pattern/opencv/linux/x86_64/libopencv_java481.so: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /tmp/opencv_openpnp2647728894578271542/nu/pattern/opencv/linux/x86_64/libopencv_java481.so)

解决方法(仅适用于 CPU 环境):

1、使用 DJL 提供的 Precxx11 版本,替代默认的 PyTorch 本地依赖

DJL 提供了一个兼容 GLIBC 低版本的 libstdc++.so.6.24 版本,专门用于老系统。

第一步:移除默认 PyTorch 本地依赖(如果存在)

<dependency>
    <groupId>ai.djl.pytorch</groupId>
    <artifactId>pytorch-native-cpu</artifactId>
    <classifier>linux-x86_64</classifier>
    <scope>runtime</scope>
    <version>2.5.1</version>
</dependency>

第二步:添加 Precxx11 替代版本:

<dependency>
    <groupId>ai.djl.pytorch</groupId>
    <artifactId>pytorch-native-cpu-precxx11</artifactId>
    <classifier>linux-x86_64</classifier>
    <version>2.5.1</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>ai.djl.pytorch</groupId>
    <artifactId>pytorch-jni</artifactId>
    <version>2.5.1-0.32.0</version>
    <scope>runtime</scope>
</dependency>

高版本的 OpenCV 依赖 GLIBC 2.27+,在 CentOS 7 上可能不兼容。你可以在项目中排除高版本,再引入兼容版本:

第三步:排除 smartjavaai-xxx 中默认的 OpenCV 依赖

<dependency>
    <groupId>cn.smartjavaai</groupId>
    <artifactId>smartjavaai-face</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.openpnp</groupId>
            <artifactId>opencv</artifactId>
        </exclusion>
    </exclusions>
</dependency>

第四步:手动引入低版本 OpenCV

<dependency>
    <groupId>org.openpnp</groupId>
    <artifactId>opencv</artifactId>
    <version>3.4.2-2</version>
</dependency>