Я пытаюсь построить проект в clojure, который берет данные из базы данных Microsoft SQL Server и выталкивает его в базу данных MySQL.Создание uberjar для проекта, который использует MySQL и SQLServer
Проект работает нормально, используя LEIN бег, но когда я упаковать его в uberjar использованием Leiningen, и запустить его с помощью Java -jar, он терпит неудачу с:
Исключение в нити «главного» Java. sql.SQLException: Нет подходящий драйвер найден для JDBC: SQLServer ....
Эта ошибка происходит только тогда, когда я пытаюсь использовать как базу данных MySQL и базы данных SQL Server. Если я использую любой из них сам по себе, файл jar работает отлично, используя java -jar.
Мой project.clj выглядит следующим образом:
(defproject sqlserver-clojure "1.0.0-SNAPSHOT"
:description "A minimal example of the MySQL/SQLServer conflict"
:dependencies [[org.clojure/clojure "1.4.0"]
[com.microsoft/sqljdbc4 "3.0"]
[clojureql "1.0.4"]
[mysql/mysql-connector-java "5.1.6"]]
:main sqlserverclojure.core)
Убер-банки - это зло; вы, вероятно, не копируете определенные ресурсы или записи в «META-INF» или, что хуже их переписываете (например, «META-INF/services/java.sql.Driver» существует во всех совместимых с JDBC драйверах с различным контентом) –
Вы можете всегда возвращайтесь к «классическому» методу загрузки драйверов JDBC с использованием 'Class.forName (« driver.class.Name »)' где-то в вашем приложении перед использованием JDBC. В качестве альтернативы вы можете использовать объекты DataSource вместо 'DriverManager.getConnection()' – millimoose
@millimoose Упоминание 'META-INF/services/java.sql.«Драйвер» был всего лишь примером, загрузка драйвера все равно может потерпеть неудачу (даже при использовании классического метода или «DataSource»), например, потому что другие требуемые ресурсы не были скопированы. –