Repast Simphony命令行批量运行的Java/Groovy配置问题求助
Repast Simphony命令行批量运行依赖问题
问题描述
在Windows系统下尝试跳过GUI启动Repast Simphony批量任务,已通过GUI生成配置属性文件。按照官方文档步骤,将配置文件与batch_runner.jar放在同一目录,使用JDK 11执行命令:
"C:\Program Files\Java\jdk-11\lib\java.exe" -jar batch_runner.jar -hl -r -c batch_configuration.properties
执行后触发Java错误:
INFO 10:15:24,983 repast.simphony.batch.gui.HeadlessMain - Writing batch run config file to: <my_repast_directory>\output\config.props java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at repast.simphony.batch.standalone.StandAloneMain.run(StandAloneMain.java:207) at repast.simphony.batch.standalone.StandAloneMain.main(StandAloneMain.java:276) Caused by: java.lang.NoClassDefFoundError: groovy/lang/GroovyObject at repast.simphony.batch.gui.HeadlessMain.createAntProject(HeadlessMain.java:87) at repast.simphony.batch.gui.HeadlessMain.run(HeadlessMain.java:66) at repast.simphony.batch.gui.HeadlessMain.main(HeadlessMain.java:310) ... 6 more Caused by: java.lang.ClassNotFoundException: groovy.lang.GroovyObject at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ... 9 more
已确认GUI启动批量运行正常,仅命令行执行出现问题。疑问:在Eclipse环境外运行Repast Simphony批量任务时,是否需要额外配置Java关联Groovy能力?
解决方案
是的,命令行运行必须手动配置Groovy及其他依赖,原因如下:
Repast Simphony的GUI或Eclipse内运行模式会自动加载所有依赖库(包括Groovy相关jar包),但单独运行batch_runner.jar时,JVM仅加载该jar包内的类,无法自动识别外部依赖,这就是groovy.lang.GroovyObject找不到的核心原因。
具体操作步骤:
- 找到Repast Simphony安装目录的
lib文件夹,提取所有Groovy相关jar包(如groovy-all-*.jar)。 - 将这些jar包复制到
batch_runner.jar所在目录,或通过命令行-cp参数指定其完整路径。 - 修改执行命令,修正Java路径并添加classpath配置,示例:
"C:\Program Files\Java\jdk-11\bin\java.exe" -cp "batch_runner.jar;groovy-all-3.0.9.jar;其他依赖jar包路径" repast.simphony.batch.gui.HeadlessMain -hl -r -c batch_configuration.properties
注意:原命令中Java路径错误,正确路径为
jdk-11\bin\java.exe;Windows系统下classpath用分号;分隔多个jar包,Linux/macOS则用冒号:。
- 确保所有Repast运行必需的依赖jar包都被加入classpath,避免后续出现其他类缺失的错误。
内容的提问来源于stack exchange,提问作者WLeo
相关产品推荐
相关产品推荐

