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

如何在Linux上通过MPI运行Maven打包的Java Jar程序

问题原因

你遇到的报错由两个核心错误导致:

  1. mpirun参数顺序错误:-np是mpirun的控制参数,必须放在执行命令前,你放在jar包路径后会被识别为Java程序的入参,不会生效
  2. 打包未包含MPI依赖:你配置的extdirs仅作用于编译期,打fat jar时没有将MPI相关类打入包中,运行时找不到mpi/MPI类

解决方案

方案1:修改打包配置,将MPI依赖打入Jar包(推荐)

  • 首先移除pom中多余的lib目录resource配置,将本地lib下的mpi.jar安装到Maven本地仓库,执行命令:
mvn install:install-file -Dfile=src/main/resources/lib/mpi.jar -DgroupId=org.openmpi -DartifactId=mpi -Dversion=4.1.1 -Dpackaging=jar
  • 在pom的dependencies节点添加MPI依赖:
<dependency>
    <groupId>org.openmpi</groupId>
    <artifactId>mpi</artifactId>
    <version>4.1.1</version>
</dependency>
  • 确认你使用的maven-assembly-plugin配置正常,使用jar-with-dependencies描述符打包时会自动将所有依赖打入最终Jar包,重新执行mvn clean package得到新的fat jar。
  • 执行正确的运行命令,若你的OpenMPI安装路径不是系统默认路径,需要提前指定本地库路径:
# 替换为你的OpenMPI lib路径、Jar包路径
LD_LIBRARY_PATH=/usr/local/openmpi-4.1.1/lib mpirun -np 4 java -jar xxx-1.0-SNAPSHOT-jar-with-dependencies.jar

方案2:运行时手动指定类路径(无需修改打包配置,适合临时测试)

不需要调整pom,直接运行时指定MPI依赖的路径,注意使用-cp参数时不能同时用-jar,需要显式指定主类全限定名:

# 替换为你的OpenMPI lib路径、mpi.jar路径、Jar包路径、主类全限定名
LD_LIBRARY_PATH=/usr/local/openmpi-4.1.1/lib mpirun -np 4 java -cp xxx-1.0-SNAPSHOT-jar-with-dependencies.jar:/path/to/mpi.jar com.xxx.YourMainClass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:54:00