2013-07-30 1 views
0

Итак, я делаю чат-клиент в netbeans, и я в значительной степени сделан. Я решил очистить и построить, чтобы проверить его автономно.Java JAR ведет себя по-разному, чтобы программа закончилась IDE

Однако, когда сообщение получено от другой программы с использованием сокетов (соединение идет нормально), программа закрывается. Эта проблема никогда не возникала, когда она запускалась прямо из среды IDE.

Итак, мне интересно, работает ли программа по-разному (ну, очевидно, это так, но как?), Когда она чиста и встроена в банку. Есть ли что-то дополнительное, что я должен принять во внимание. Например, исключение означает, что все это внезапно прекратится?

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

+2

Вы можете увидеть отчет об исключении, если вы запустите его с консоли с помощью java -jar program.jar'. – tbodt

+0

он не должен вести себя иначе после компиляции. Может быть, это где-то не получается, вы уверены, что не видите никаких исключений? – bas

+2

Netbeans использует тот же самый файл 'jar', который вы создали. Нет изменений, это тот же файл. Интересно, установили ли вы некоторый аргумент runtime в netbeans и забыли использовать их во время работы с 'cmd'? – Jatin

ответ

2

Основные отличия - это каталог, в котором он запущен, конкретную версию Java, которую вы используете, и параметры командной строки.

Из них наиболее вероятной причиной проблемы является запуск другой версии Java. Я бы проверял, что

java -version 

такое же, как и в netbeans.

Я также запустил JAR из командной строки, чтобы убедиться, что вы видите ошибки/ошибки.

1

Проблема может быть в кодировке. Мой NetBeans IDE запускает банку файлы с

-Dfile.encoding=UTF-8 -Djava.security.policy=applet.policy -classpath -Xmx512M -Xss64M 

Как видим, он запускает баночки с использованием кодировки UTF-8.

0

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

Reader chars = new InputStreamReader(bytes); 

Я использовал

Reader chars = new InputStreamReader(bytes, "UTF-8"); 

и решить мою проблему.

Cheers!