JModelica2.14运行报错java.lang.NoClassDefFoundError求助
解决JModelica 2.14 Win10环境下ModelicaCompiler类找不到的RuntimeError
问题复现
Win10系统通过官方二进制包安装JModelica 2.14,执行setenv.bat后启动64位Python,导入.\install\Python_64后运行以下代码报错:
import modelicacasadi_wrapper modelicacasadi_wrapper.OptimicaOptionsWrapper()
报错信息:
RuntimeError Traceback (most recent call last) <ipython-input-11-ce2bcdfa3f06> in <module>() ----> 1 modelicacasadi_wrapper.OptimicaOptionsWrapper() C:\JModelica.org-2.14\install\Python_64\modelicacasadi_wrapper\modelicacasadi_wrapper.pyc in __init__(self, *args) 3472 __init__(ModelicaCasADi::OptimicaOptionsWrapper self, OptimicaOptionsWrapper other) -> OptimicaOptionsWrapper 3473 """ -> 3474 this = _modelicacasadi_wrapper.new_OptimicaOptionsWrapper(*args) 3475 try: 3476 self.this.append(this) RuntimeError: java.lang.NoClassDefFoundError org/jmodelica/optimica/compiler/ModelicaCompiler Caused by: java.lang.ClassNotFoundException: org.jmodelica.optimica.compiler.ModelicaCompiler at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
解决方案
1. 检查环境变量与JDK版本
- 确认
setenv.bat生效:必须在执行setenv.bat的同一个命令行窗口启动Python,否则环境变量不会加载。 - 匹配JDK版本:JModelica 2.14仅兼容Java 8(Oracle JDK或OpenJDK),高版本JDK(如Java 11+)会出现类加载兼容问题。卸载高版本JDK,安装Java 8后重新执行
setenv.bat。
2. 手动修复CLASSPATH
如果setenv.bat未正确配置Java类路径,手动添加Optimica相关Jar包:
在JModelica安装根目录的命令行窗口执行:
set CLASSPATH=%CLASSPATH%;%CD%\lib\optimica-compiler.jar;%CD%\lib\jmodelica-compiler.jar
随后启动Python重新测试代码。
3. 源码编译修复(针对类名错误推测)
若确认是wrapper二进制中类名引用错误(应为org.jmodelica.optimica.compiler.OptimicaCompiler而非ModelicaCompiler),可尝试源码编译修复:
- 安装依赖:CMake 3.10+、Visual Studio 2017/2019(带C++工具链)、Java 8、Python 3.7.x。
- 克隆源码时同步子模块:
git clone --recursive https://github.com/modelon-community/jmodelica.git - 进入源码目录,修改
modelicacasadi_wrapper相关代码中引用的Java类名,将ModelicaCompiler替换为OptimicaCompiler。 - 按照官方文档步骤,用CMake生成Visual Studio工程,编译后替换原二进制文件。
内容的提问来源于stack exchange,提问作者S14p
相关产品推荐
相关产品推荐

