You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

树莓派Debian 12环境安装eProsima FastDDS 3.2.0时,出现‘openjdk-11-jdk-headless无安装候选’错误求助

树莓派Debian 12环境安装eProsima FastDDS 3.2.0时,出现‘openjdk-11-jdk-headless无安装候选’错误求助

老哥,我之前在Debian 12 Bookworm上折腾FastDDS的时候也踩过一模一样的Java依赖坑,给你几个亲测有效的解决思路:

  • 优先试试从backports源安装Java 11
    Debian 12默认软件源里已经把OpenJDK 11标成旧版本了,默认推的是OpenJDK 17,所以直接搜11的包自然找不到候选。你可以指定从bookworm-backports源来装,命令如下:

    sudo apt update && sudo apt install -t bookworm-backports openjdk-11-jdk-headless
    

    装完之后再重新跑FastDDS的安装脚本,应该就能正常通过依赖检查了。

  • 让安装脚本识别你已有的SDKMAN版Java 11
    既然你已经用SDKMAN装好了Java 11,先确认它是不是当前环境的默认Java:

    java -version
    

    要是输出是11.x.x的版本,就手动设置JAVA_HOME环境变量指向SDKMAN的安装路径(路径得根据你实际装的版本调整):

    export JAVA_HOME=$HOME/.sdkman/candidates/java/11.0.20-tem
    

    设置好之后再运行./install.sh eprosima fastdds 3.2.0 Linux,脚本会优先用你本地已经装好的Java环境,不会再跑去apt拉包了。

  • 绕开安装脚本,直接源码编译FastDDS
    其实FastDDS的核心是C++写的,Java依赖只是给部分辅助工具用的。如果不需要Java相关的组件,你可以直接源码编译安装,完全避开这个依赖问题:

    1. 先装核心的编译依赖:
      sudo apt install cmake g++ libasio-dev libtinyxml2-dev
      
    2. 克隆FastDDS 3.2.0版本的源码(指定v3.2.0分支):
      git clone --branch v3.2.0 https://github.com/eProsima/Fast-DDS.git
      
    3. 进入源码目录开始编译安装:
      cd Fast-DDS
      mkdir build && cd build
      cmake .. -DCOMPILE_JAVA=OFF
      make -j$(nproc)
      sudo make install
      

    -DCOMPILE_JAVA=OFF是明确告诉编译系统不要构建Java相关的部分,这样连Java环境都不需要准备了。

我当时是用第一个方法搞定的,你可以先试试这个,最省心。

内容来源于stack exchange

火山引擎 最新活动