我使用的库是基于 MSL 和 Modelica Buildings 库的。该模型可以由 Dymola 进行模拟,而不会出现任何错误消息或警告。MODELICAPATH 也在 bashrc 和 PYTHONPATH 中设置。我使用 JModelica 2.1、Python 2.7 和 Ubuntu 16.04。
显然找到了库和模型,所以我认为路径不是实际问题。当我使用 compile_fmu 来模拟不属于库的模型时,一切正常。所以对我来说,pymodelica 的库结构或类似问题似乎存在问题。你知道这里发生了什么吗?
from pymodelica import compile_fmu
...
fmu=compile_fmu('BuildingModel.Examples.ExampleBuilding','ExampleBuilding.mo')
错误信息:
File 'ExampleBuilding.mo' is part of library at '/home/debs/Schreibtisch/BuildingModel', using library instead.
Unknown program error, java.lang.NullPointerException
Traceback (most recent call last):
File "Building_Simulation.py", line 239, in <module>
fmu=compile_fmu('BuildingModel.Examples.ExampleBuilding','ExampleBuilding.mo')
File "/home/debs/Downloads/JModelica/JModelica/Python/pymodelica/compiler.py", line 141, in compile_fmu
separate_process, jvm_args)
File "/home/debs/Downloads/JModelica/JModelica/Python/pymodelica/compiler.py", line 248, in _compile_unit
compiler_options, compile_to, compiler_log_level, jvm_args)
File "/home/debs/Downloads/JModelica/JModelica/Python/pymodelica/compiler.py", line 362, in compile_separate_process
return log.end();
File "/home/debs/Downloads/JModelica/JModelica/Python/pymodelica/compiler_logging.py", line 334, in end
raise JError("%s\n%s" % (exception.message, exception.stacktrace))
pymodelica.compiler_exceptions.JError:
java.lang.NullPointerException
at org.jmodelica.modelica.compiler.CommonForIndex.addReplacementEntry(Unknown Source)
at org.jmodelica.modelica.compiler.FIterExp.splitArrayExp(Unknown Source)
at org.jmodelica.modelica.compiler.FArray.splitArrayExp(Unknown Source)
at org.jmodelica.modelica.compiler.InstArrayComponentDecl.Define_splitBindingFExp(Unknown Source)
at org.jmodelica.modelica.compiler.ASTNode.Define_splitBindingFExp(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.splitBindingFExp(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.Define_splitBindingFExp(Unknown Source)
at org.jmodelica.modelica.compiler.ASTNode.Define_splitBindingFExp(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.splitBindingFExp(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.Define_splitBindingFExp(Unknown Source)
at org.jmodelica.modelica.compiler.ASTNode.Define_splitBindingFExp(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.splitBindingFExp(Unknown Source)
at org.jmodelica.modelica.compiler.InstAssignable.getBindingFExp_compute(Unknown Source)
at org.jmodelica.modelica.compiler.InstAssignable.getBindingFExp(Unknown Source)
at org.jmodelica.modelica.compiler.InstAssignable.hasBindingFExp(Unknown Source)
at org.jmodelica.modelica.compiler.InstAssignable.isCircular_compute(Unknown Source)
at org.jmodelica.modelica.compiler.InstAssignable.isCircular(Unknown Source)
at org.jmodelica.modelica.compiler.FIdUseInstAccess.isCircular(Unknown Source)
at org.jmodelica.modelica.compiler.FIdUseExp.isCircularCalc(Unknown Source)
at org.jmodelica.modelica.compiler.FAbstractExp.isCircular_compute(Unknown Source)
at org.jmodelica.modelica.compiler.FAbstractExp.isCircular(Unknown Source)
at org.jmodelica.modelica.compiler.FExp.ceval(Unknown Source)
at org.jmodelica.modelica.compiler.FExp.ceval(Unknown Source)
at org.jmodelica.modelica.compiler.MutableSize.evaluate(Unknown Source)
at org.jmodelica.modelica.compiler.MutableSize.get(Unknown Source)
at org.jmodelica.modelica.compiler.InstComponentDecl.childDimensionLength(Unknown Source)
at org.jmodelica.modelica.compiler.InstComponentDecl.getInstComponentDeclList_compute(Unknown Source)
at org.jmodelica.modelica.compiler.InstComponentDecl.getInstComponentDeclList(Unknown Source)
at org.jmodelica.modelica.compiler.InstComposite.getInstComponentDecls(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.compareCompositeTypes(Unknown Source)
at org.jmodelica.modelica.compiler.InstComposite.subType(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.compareCompositeTypes(Unknown Source)
at org.jmodelica.modelica.compiler.InstArrayComponentDecl.subType(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.compareCompositeTypes(Unknown Source)
at org.jmodelica.modelica.compiler.InstComposite.subType(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.compareCompositeTypes(Unknown Source)
at org.jmodelica.modelica.compiler.InstComposite.subType(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.compareCompositeTypes(Unknown Source)
at org.jmodelica.modelica.compiler.InstComposite.subType(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.subType(Unknown Source)
at org.jmodelica.modelica.compiler.InstComponentDecl.typeCheckReplacingComponent(Unknown Source)
at org.jmodelica.modelica.compiler.InstReplacingComposite.typeCheck(Unknown Source)
at org.jmodelica.modelica.compiler.ErrorChecker$TypeChecker.check(Unknown Source)
at org.jmodelica.modelica.compiler.ASTNode.allChecks(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.collectErrors(Unknown Source)
at org.jmodelica.modelica.compiler.InstComponentDecl.collectErrors(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.collectErrors(Unknown Source)
at org.jmodelica.modelica.compiler.InstExtends.collectErrors(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.collectErrors(Unknown Source)
at org.jmodelica.modelica.compiler.InstComponentDecl.collectErrors(Unknown Source)
at org.jmodelica.modelica.compiler.InstNode.collectErrors(Unknown Source)
at org.jmodelica.modelica.compiler.InstBaseClassDecl.collectErrors(Unknown Source)
at org.jmodelica.modelica.compiler.InstFullClassDecl.collectErrors(Unknown Source)
at org.jmodelica.modelica.compiler.InstLibNode.collectErrors(Unknown Source)
at org.jmodelica.modelica.compiler.ASTNode.errorCheck(Unknown Source)
at org.jmodelica.modelica.compiler.InstClassDecl.checkErrorsInModelInstance(Unknown Source)
at org.jmodelica.modelica.compiler.ModelicaCompiler.doInstantiateModel(Unknown Source)
at org.jmodelica.modelica.compiler.ModelicaCompiler.instantiateModel(Unknown Source)
at org.jmodelica.modelica.compiler.ModelicaCompiler.instantiateModel(Unknown Source)
at org.jmodelica.modelica.compiler.ModelicaCompiler.doCompileModel(Unknown Source)
at org.jmodelica.modelica.compiler.ModelicaCompiler.compileModel(Unknown Source)
at org.jmodelica.modelica.compiler.ModelicaCompiler.doCompileUnit(Unknown Source)
at org.jmodelica.modelica.compiler.ModelicaCompiler.compileUnit(Unknown Source)
at org.jmodelica.modelica.compiler.ModelicaCompiler.compileUnit(Unknown Source)
at org.jmodelica.modelica.compiler.ModelicaCompiler.compileModelFromCommandLine(Unknown Source)
at org.jmodelica.modelica.compiler.ModelicaCompiler.main(Unknown Source)