Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > как запустить с библиотекой?


Автор: Su_ 11.11.2010, 14:56
Добрый день!
Встал странный вопрос , как в линуксе(mandriva) запустить java проект который использует mysql-connector-java который лежит в папочке /lib/?

По логике ,как то так:
Код

java -jar mytest.jar -lib "/lib/mysql-connector-java.jar"

Но как я понял ,надо как то через CLASSPATH, но эксперименты не привели пока к успеху. Подскажите синтаксис пожалуйста!)

Автор: Kircul 11.11.2010, 15:45
Опция -cp. Читать http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html#standard. И вместе с опцией -jar помоему не работает, надо сделать так:
Код

java -cp "/lib/mysql-connector-java.jar:./mytest.jar" my.test.MainClass

Либо в manifest файле прописать classpath. Читать http://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html#Main%20Attributes.

Автор: Su_ 11.11.2010, 15:46
Код

в Linux:
java -classpath lib/ test.jar


Но почему-то не работает
пишет:
Код

Exception in thread "main" java.lang.noClassDefFoundError

Автор: Kircul 11.11.2010, 15:52
Не только в линуксе не работает, это корректное поведение. См. отредактированный предыдущий пост.

Добавлено через 7 минут и 30 секунд
Ну и в дополнение пример manifest файла для standalone приложения (как я обычно собираю):
Код

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: kircul
Build-Jdk: 1.6.0_21
Main-Class: my.application.App
Class-Path: lib/commons-httpclient-3.1.jar lib/commons-logging-1.0.4.j
 ar lib/commons-codec-1.2.jar

папка lib лежит в одной директории вместе с основным jar'ом. При желании можно сделать симлинк на jar из /lib.

Автор: Su_ 11.11.2010, 16:00
в манифесте прописан
Код

Manifest-Version: 1.0

Ant-Version: Apache Ant 1.8.0

Created-By: 1.6.0_21-b07 (Sun Microsystems Inc.)

Main-Class: catchevent.Main

Class-Path: lib/mysql-connector-java-5.1.13-bin.jar

X-COMMENT: Main-Class will be added automatically by build




если через командную строку
Код

java -cp "lib/mysql-connector-java-5.1.13-bin.jar:./CatchEvent.jar" catchevent.Main


Запускает, но библиотеку не цепляет. ибо выводит то же самое что "java -jar CatchEvent.jar"


Автор: Kircul 11.11.2010, 16:10
Еще раз
Код

Class-Path: lib/mysql-connector-java-5.1.13-bin.jar

означает что рядом с CatchEvent.jar фалом лежит директория lib с mysql-connector-java-5.1.13-bin.jar. В вашем случае директория lib находится в корне, если я правильно понял. Значит делать надо так.
Код

Class-Path: /lib/mysql-connector-java-5.1.13-bin.jar

либо так 
Код

java -cp "/lib/mysql-connector-java-5.1.13-bin.jar:./CatchEvent.jar" catchevent.Main

Автор: Su_ 11.11.2010, 16:16
Не совсем, папка lib лежит рядом с .jar_ом
Код


[root@localhost cathEvent]# ls
CatchEvent.jar  lib/
[root@localhost cathEvent]# ls lib
mysql-connector-java-5.1.13-bin.jar


и манифесте прописанно верно
Код

Class-Path: lib/mysql-connector-java-5.1.13-bin.jar


Мне начинает казаться что глючит код, или может версия самой библиотеки.
Так то всё верно?

А вылетает она когда не может взять данные из базы, а они там есть => он не может к ней подсоединиться. Вопрос почему)

по поводу самой библиотеке написанно что она независимая от платформ(Architecture Independent)

Автор: Kircul 11.11.2010, 16:22
Если у вас до сих пор вылетает NoClassDefFoundError, то дайте полный стэктрейс, если нет, то и проблеммы с которой начали нету.

Автор: Su_ 11.11.2010, 16:23
извиняюсь, мне надо посмотреть исходини дома. Может быть проблема в логин/пароль , точнее в их Регистре. 
Как приеду отпишусь.  Спасибо за помощь ,хоть понял как ручками компилировать в linux)

Автор: Skipy 12.11.2010, 10:38
http://www.skipy.ru/technics/likbez.html

Автор: Su_ 12.11.2010, 18:40
Спасибо всем, походу проблема в другом.
Драйвер подцепляет корректно, а вот к базе подключатся не хочет, хотя через phpmyadmin все работет.
Выбрасывает исключение :
Код

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Почитал про эту ошибку , народ пишет что смена ОС помогает. На Мандриве 2009 такой баг был,и народ таблетку не нашел.


Наверное можно капать откуда она вылезает, но это тема не этого топика. Посему попробую пересесть на другую ОС. достала меня Мандрива, много с ней проблем(

Всем спасибо! smile 

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