OpenMPI Java运行报错java.lang.NoClassDefFoundError: mpi/MPIException求助
问题原因
- 第一个
java.lang.NoClassDefFoundError: mpi/MPIException报错:命令行运行时类路径仅包含了项目编译输出目录,未加入OpenMPI的mpi.jar依赖,JVM无法找到MPI相关类。IntelliJ IDEA的依赖配置仅作用于IDE内部的运行流程,不会自动同步到手动执行的命令行中。 - 第二个
ClassNotFoundException报错:调整参数时给主类名添加了.java后缀,Java命令运行时需要传入不带后缀的全限定类名,加后缀会被JVM识别为非法类名无法匹配。 - 额外注意:OpenMPI的Java绑定依赖本地动态库,运行时还需要指定本地库路径,否则后续可能出现找不到本地库的报错。
修复后的运行命令
mpirun -np 1 java \ -cp /Users/user/IdeaProjects/dap/target/classes:/Users/user/openmpi/lib/mpi.jar \ -Djava.library.path=/Users/user/openmpi/lib \ com.mathpar.NAUKMA.examples.HelloWorldParallel
macOS/Linux系统下类路径多个条目用冒号
:分隔,如果是Windows系统请替换为分号;
验证要点
- 确认
/Users/user/openmpi/lib/mpi.jar文件真实存在 - 确认项目编译输出目录下存在对应类文件:
/Users/user/IdeaProjects/dap/target/classes/com/mathpar/NAUKMA/examples/HelloWorldParallel.class - 确认
/Users/user/openmpi/bin已加入PATH环境变量,运行mpirun --version能正常输出版本信息
内容的提问来源于stack exchange,提问作者Boiko Danylo
相关产品推荐
相关产品推荐

