Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > проблемы с пропиской Microsoft-JDBC


Автор: azalia 12.5.2015, 14:28
Доброго времени суток! Помогите прописать драйвер JDBC от microsoft в Tomcat 7. Использую JDK 7. Никаких дополнительных драйверов jdbc не устанавливала.

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

Код

C:\Tomcat 7.0\webapps\test1\WEB-INF\classes>java connectURL
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at connectURL.main(connectURL.java:18)



Или такой фокус не проходит?

Использую следующую строку подключения:

Код

String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
         "databaseName=AdventureWorks;user=Администратор;password=123";



Порт на sqlserver tcp-1433 открыт. Делаю все локально.

чяднт?

Автор: AntonSaburov 12.5.2015, 14:43
Судя по сообщению, Томкат (или приложение) не видит JAR с драйвером, в котором класс com.microsoft.sqlserver.jdbc.SQLServerDriver.
Скопируйте его либо в каталог <TOMCAT>/lib, либо подключите в свой WAR.

Автор: azalia 12.5.2015, 14:48
Цитата(AntonSaburov @ 12.5.2015,  14:43)
Судя по сообщению, Томкат (или приложение) не видит JAR с драйвером, в котором класс com.microsoft.sqlserver.jdbc.SQLServerDriver.
Скопируйте его либо в каталог <TOMCAT>/lib, либо подключите в свой WAR.

У меня сейчас драйвер раскидан по папкам:

C:\Tomcat 7.0\lib
sqljdbc41.jar

C:\Tomcat 7.0\bin
sqljdbc_auth.dll

Пробовала в само приложение test1 закидывать в папку lib - тоже не помогает.

Переменная среды:
JAVA_HOME
C:\jdk1.7.0_79

Системная переменная:
Path
C:\jdk1.7.0_79\bin;C:\Tomcat 7.0

Может ошибка в том что я пытаюсь все проверить из командной строки? Мне надо сервелет какой-нибудь создавать или jsp?

Автор: AntonSaburov 12.5.2015, 15:05
dll наверно надо положить туда, куда прописан путь (PATH). 

Статья о том, где Винда ищет DLL
https://msdn.microsoft.com/en-us/library/7d83bc18.aspx

Из командной строки наверно будет правильнее - поймете хоть как это работает. Но если Вы запускаете из командной строки, то тогда DLL лучше положить туда, откуда запускаете тестовове приложение, а JAR прописать в CLASSPATH при запуске приложения.

Автор: azalia 12.5.2015, 15:56
Цитата(AntonSaburov @  12.5.2015,  15:05 Найти цитируемый пост)
Но если Вы запускаете из командной строки, то тогда DLL лучше положить туда, откуда запускаете тестовове приложение, а JAR прописать в CLASSPATH при запуске приложения.


Прописала весь путь в classpath и path:
C:\Tomcat 7.0\webapps\test1\WEB-INF\classes

в этой папке лежит:
connectURL.java
connectURL.class
sqljdbc41.jar
sqljdbc_auth.dll

не работает, ошибка такая же.

закинула sqljdbc41.jar в папку C:\jdk1.7.0_79\lib и прописала эту папку тоже в classpath - не работает.

может нужна какая-то специальная связка типа odbc-jdbc?

Автор: LSD 12.5.2015, 17:03
ClassNotFoundException говорит именно о не найденом классе. Если бы дело было в dll то было бы java.lang.UnsatisfiedLinkError: Unable to load library. 

По сабжу, зачем запускать обычное косольное приложение из папки томката? А так надо или прописать путь к sqljdbc41.jar в системной переменной CLASSPATH или указывать при запуске явно:
Код

java -cp "C:\Tomcat 7.0\lib\sqljdbc41.jar";. connectURL

Автор: azalia 12.5.2015, 17:52
Цитата(LSD @  12.5.2015,  17:03 Найти цитируемый пост)
или указывать при запуске явно:


да! так заработало! спасибо!

в classpath путь тоже целиком указала к jar - заработало!

Цитата(LSD @  12.5.2015,  17:03 Найти цитируемый пост)
зачем запускать обычное косольное приложение из папки томката? 


а это у меня такой метод исключения ошибок, чтобы не запутаться потом "откуда ноги растут" у проблемы, ну т.е. мне потом надо будет это как-то через tomcat запускать...

Автор: AntonSaburov 13.5.2015, 09:11
Ну зато теперь с CLASSPATH скорее всего разобрались. Знаете, что надо не папку указывать, а JAR. Ну или папку в которой лежат файлы .class

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