【发布时间】:2016-04-20 10:28:44
【问题描述】:
我目前正在写我的学士论文,我的目的是创建一个 VANET 模拟器,让流量模拟器 SUMO 和网络模拟器 OMNeT++ 协同工作。
我知道已经有一个名为 Veins 的项目正在这样做。
但问题是我除了 PHP 或 Java 外不知道其他语言,我认为我需要更多时间来尝试理解 Veins,而不是用 Java 来做。
我已经看到,在 Java 中,有一个名为 traci4j 的库,旨在替代 Java 语言中的 TraCI。
我认为,要完成的第一步是能够从 Java 运行 SUMO 和 OMNeT++。一旦我实现了这一点,我就会着手处理两个程序之间的数据交换。
但是,我正在尝试从我的简单程序运行 SUMO-gui,但均未成功:
public static void main(String[] args) throws IOException, InterruptedException {
String configFile = "test/resources/sumo_maps/Test2/Test2.sumo.cfg";
SumoTraciConnection trial = new SumoTraciConnection(configFile,-1);
trial.runServer(true);
}
但我不断收到以下信息。我曾尝试在调试模式下进行此操作,但这是一项非常乏味的工作,最后我什么也得不到。
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 9, Size: 7
at java.util.ArrayList.rangeCheckForAdd(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at it.polito.appeal.traci.SumoTraciConnection.runSUMO(SumoTraciConnection.java:477)
at it.polito.appeal.traci.SumoTraciConnection.runServer(SumoTraciConnection.java:267)
at trial.TrialConnection.main(TrialConnection.java:32)
如果你能告诉我我的想法是什么,我将不胜感激。任何其他关于我的想法和计划我的论文的方式的评论也将不胜感激。
顺便说一句,我正在使用 SUMO 0.25、OMNeT++ 4.6 和 Eclipse Mars.2 Release (4.5.2)
提前感谢您的关注
编辑:
我设法找到了异常的来源,您可以将其作为答案找到。但是,我不断收到错误消息:
ERROR StatusLogger 找不到 log4j2 配置文件。使用默认配置:仅将错误记录到控制台。
不管怎样,这似乎并不影响程序的运行,因为我运行成功了。但是,如果我不按运行按钮,它就不起作用!
【问题讨论】:
-
您使用的 SUMO 版本可能与您使用的 traci4j 版本不兼容
-
我刚刚发现了IndexOutOfBoundsException的起源,似乎当SumoTraciConnection调用runServer(boolean WithGui)时,如果WithGui设置为true,那么它会跳过添加2项到列表中:
if (randomSeed != -1) { args.add(7, "--seed"); args.add(8, Integer.toString(randomSeed)); } args.add(9, "--xml-validation"); args.add(10, "never");而且,关于版本,它在他们的网页上说:一个有效的 SUMO 安装(0.23.0 或更高版本) -
如果您能够回答自己的问题,请随时自行添加答案。 StackOverflow 就是为(好的)问题收集好的答案。发布针对常见问题的良好解决方案将有助于未来的其他人。
-
对不起,我是新来的,我不知道“评论”和“答案”之间有显着区别!我现在就做
标签: java omnet++ veins traffic-simulation