2016-04-20 3 views
0

В настоящее время я работаю над диссертацией бакалавра, и моя цель - создать симулятор VANET с симулятором трафика SUMO и сетевым симулятором OMNeT ++, работающим вместе.SUMO и OMNeT ++, работающие вместе с Java

Я знаю, что уже существует один проект под названием Veins, который это делает.

Но проблема в том, что я не знаю других языков, кроме PHP или Java, и я думаю, для меня потребуется больше времени, чтобы попытаться понять Veins, а не делать это на Java.

Я видел, что в случае Java существует библиотека под названием traci4j, которая ставит своей целью заменить TraCI на языке Java.

Я думаю, что первым крупным шагом для выполнения было бы запустить SUMO и OMNeT ++ с Java. Как только я достиг этого, я приступаю к работе по обмену данными между обеими программами.

Однако, я делал некоторые испытания, все они неудачны, чтобы запустить SUMO-гуй из моей простой программы:

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) 

Я был бы очень признателен, если бы вы могли сказать мне, что происходит от моих мыслей. Любые другие комментарии относительно моей идеи и способа планирования моей диссертации также будут оценены.

BTW, я использую SUMO 0.25, OMNeT ++ 4.6 и Eclipse, Mars.2 Release (4.5.2)

Заранее спасибо за внимание

EDIT:

мне удалось найти происхождение Исключения, вы можете найти его как ответ. Тем не менее, я продолжаю получать ошибку:

ERROR StatusLogger Файл конфигурации log4j2 не найден. Использование конфигурации по умолчанию: запись только ошибок на консоль.

В любом случае, это не влияет на работу программы, так как я запускаю ее успешно. Однако, если я не нажимаю кнопку «Запустить», это не сработает!

+0

вы можете использовать версию SUMO, которая несовместима с версией traci4j вы используете –

+0

Я только что обнаружил происхождение IndexOutOfBoundsException, кажется, что, когда SumoTraciConnection вызовов runServer (логическая WithGui), если WithGui является set to true, то он пропускает добавление 2 элементов в список: 'if (randomSeed! = -1) { \t \t \t args.add (7, "--seed"); \t \t \t args.add (8, Integer.toString (randomSeed)); } \t args.add (9, "--xml-validation"); \t args.add (10, «никогда»); ' И, что касается версии, он говорит на своем веб-странице: _A установка работает SUMO (0.23.0 или выше) _ – Biurrun

+0

Если вы были в состоянии ответить на свой собственный вопрос, не стесняйтесь добавлять ответ самостоятельно. StackOverflow - это сбор хороших ответов на (хорошие) вопросы. Публикация хорошего решения общей проблемы поможет другим людям в будущем. –

ответ

0

Я обнаружил происхождение IndexOutOfBoundsException, кажется, что, когда SumoTraciConnection вызовы runServer (INT RemotePort, логическое withGui), если WithGui установлено значение истинно, то он пропускает добавление 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"); 
Смежные вопросы