0

我目前正在写我的学士论文,我的目的是创建一个 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)

提前感谢您的关注

编辑:

我设法找到了异常的起源,您可以将其作为答案找到。但是,我不断收到错误:

错误 StatusLogger 找不到 log4j2 配置文件。使用默认配置:仅将错误记录到控制台。

无论如何,这似乎并不影响程序的运行,因为我运行它成功了。但是,如果我不按运行按钮,它就不起作用!

4

1 回答 1

0

我发现了 IndexOutOfBoundsException 的起源,似乎当 SumoTraciConnection 调用 runServer(int remotePort, boolean withGui) 时,如果 WithGui 设置为 true,那么它会跳过向列表中添加 2 项:

if (randomSeed != -1) {
    args.add(7, "--seed");
    args.add(8, Integer.toString(randomSeed));
}

// this avoids validation of the input xml files; if SUMO_HOME is not set correctly,
// sumo will try to download the schema files from the web and may wait 30 seconds at startup
// for the connection to time out.
args.add(9, "--xml-validation");
args.add(10, "never");
于 2016-04-20T11:12:50.763 回答