AnyLogic使用executeExpression()出现JVM兼容错误求助
解决AnyLogic 8.8.1中executeExpression()触发的JVM版本兼容提示错误
问题场景
- 使用AnyLogic 8 Professional 8.8.1版本,调用
executeExpression()执行字符串形式的代码时,控制台弹出如下错误提示:
Annotation processing got disabled, since it requires a 1.6 compliant JVM
- 系统全局Java版本为19.0.1,执行
java -version输出:
java version "19.0.1" 2022-10-18 Java(TM) SE Runtime Environment (build 19.0.1+10-21) Java HotSpot(TM) 64-Bit Server VM (build 19.0.1+10-21, mixed mode, sharing)
- 该提示不会终止仿真,
executeExpression()仍可正常运行,但需要消除这个无关的错误提示。
解决方案
1. 切换到AnyLogic内置JDK
AnyLogic自带了适配版本的JDK,优先使用内置版本可避免版本兼容问题:
- 打开AnyLogic,点击顶部菜单栏
File→Preferences(Windows/Linux)或AnyLogic→Settings(Mac) - 在设置窗口中找到
Java选项卡 - 勾选
Use the embedded JDK,点击Apply后重启AnyLogic
2. 指定兼容的外部JDK版本
若需要使用外部JDK,建议选择AnyLogic 8.8.1官方推荐的Java 8或Java 11(这两个版本对注解处理逻辑的兼容性更好):
- 下载并安装64位的Java 8或Java 11
- 在AnyLogic的
Java设置选项卡中,选择Use custom JDK,浏览到安装的Java目录,点击Apply后重启软件
3. 优化executeExpression()的使用逻辑(可选)
如果不想更换JDK,可尝试调整代码避免触发注解处理:
- 避免在
executeExpression()的字符串代码中使用涉及自定义注解的语法 - 将复杂逻辑提前封装为AnyLogic的函数或Agent方法,直接调用方法而非通过字符串执行代码
内容的提问来源于stack exchange,提问作者Yossi Benagou
相关产品推荐
相关产品推荐

