Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > NetBeans4.1 Проблема с запуском готовой программы


Автор: esselt 31.8.2005, 11:22
День добрый!
Помогите разобраться со следующей проблемой

Есть NetBeans 4.1. Программа коннектится к Firebird серверу, используя его родной драйвер jaybird, читает данные и грузит в JTable.
При запуске из IDE все замечательно работает.

При попытке запустить собранный jar
Цитата
java -cp d:\jlibs\jaybird-full-2.0.0.jar -jar jproj.jar

получается ошибка
Цитата
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/firebirdsql/pool/FBWrappingDataSource


Где копать?

Автор: AntonSaburov 31.8.2005, 11:52
Видимо не подключена какая-то библиотета. Надо ее прописать в CLASSPATH при запуске.

Автор: esselt 31.8.2005, 12:12
Цитата(AntonSaburov @ 31.8.2005, 11:52)
Видимо не подключена какая-то библиотета. Надо ее прописать в CLASSPATH при запуске.

Эта библиотека jaybird-full-2.0.0.jar и ее я пытаюсь указать в параметре -cp (он же -classpath) "java -cp ..."

Автор: LSD 31.8.2005, 12:40
Попробуй так:
Код
java -cp "D:\jlibs\jaybird-full-2.0.0.jar" -jar jproj.jar

Автор: esselt 31.8.2005, 13:12
Пробовал огромное количество вариантов задания этого пути - безрезультатно. Больше всего изводит мысль, что из IDE все пускается - значит проблема где-то совсем рядом smile

Автор: AntonSaburov 31.8.2005, 13:33
Посмотри в настройках IDE - может что-то в путях еще надо прописать. Да ведь при запуске можно посмотреть командную строку - вот и сравни со своей.

Автор: esselt 31.8.2005, 14:06
не показывает NetBeans при запуске командную строку

Настройки, сколько нашел, все облазил - задается путь к этой библиотеке в свойствах проекта, но просто в виде D:\jlibs\jaybird-full-2.0.0.jar
Т.е. как-то он передает его в виде параметра при запуске, а вот как???

Автор: esselt 31.8.2005, 14:19
Подскажите, где в W2k задается переменная среды CLASSPATH. В ней кое-какие пути есть, но опять-таки не получается ее изменить через set CLASSPATH=...

Автор: LSD 31.8.2005, 14:22
Панель управления\Система\Дополнительно.

Автор: esselt 31.8.2005, 14:29
Цитата(LSD @ 31.8.2005, 14:22)
Панель управления\Система\Дополнительно.

Спасибо.
Уже нашел в реестре...

Автор: esselt 31.8.2005, 15:07
Ничего не понял, но в итоге проблема решилась так:

Код

java -classpath d:\jlibs\jaybird-full-2.0.0.jar;d:\proj\jproj\dist\jproj.jar jproj.JMain


т.е. в classpath добавил jar с программой, а запускал не сам jar, а MainClass из него.

И что это было?!

Автор: AntonSaburov 31.8.2005, 15:11
Ну вы блин даете. Кто сказал, что jar запускается сам по себе ?
Надо опцию -jar прописывать тогда. И надо, чтобы в jar в манифесте был указан нужный класс.

Автор: esselt 31.8.2005, 15:19
Цитата(AntonSaburov @ 31.8.2005, 15:11)
Ну вы блин даете. Кто сказал, что jar запускается сам по себе ?
Надо опцию -jar прописывать тогда. И надо, чтобы в jar в манифесте был указан нужный класс.

Если повнимательнее посмотреть первый пост, то там запускается именно с -jar.

В манифесте MainClass прописан, ошибка (sorry не привел полностью распечатку) возникает именно в основном классе при обращении к библиотеке.

Автор: batigoal 31.8.2005, 15:25
А ведь в манифесте тоже нужно прописывать classpath, если не ошибаюсь...

Автор: esselt 31.8.2005, 15:28
Цитата(Lamer @ 31.8.2005, 15:25)
А ведь в манифесте тоже нужно прописывать classpath, если не ошибаюсь...

Это интересно...
Где вообще можно почитать о структуре manifest.mf?

Автор: batigoal 31.8.2005, 15:44
В спецификации:
http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html#JAR%20Manifest

Сам не читал smile
Добавлено @ 15:45
Точно, Class-Path там есть.

Автор: esselt 31.8.2005, 16:04
Thnx

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)