Mssql и Postgresql jdbc drivers внутри одного jar файла

173
16 августа 2018, 14:50

Мне в моем приложении надо уметь общаться и с postgresql и c mssql. В начале приложение обращается k postgre, потом уже к mssql.

Пытаюсь сделать fat jar с помощью gradle :

dependencies {
    compile group: 'org.postgresql', name: 'postgresql', version: '42.1.4'
    compile group: 'com.microsoft.sqlserver',name: 'mssql-jdbc', version: '6.4.0.jre8'
}
jar {
   manifest {
      'Main-class' : 'my.package.Main',
      'Class-Path' : '.'
   }
   from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}

При попытке запуска jar файла пишет следующее :

java -jar myApp.jar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
    at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:330)
    at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:263)
    at java.util.jar.JarVerifier.processEntry(JarVerifier.java:275)

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

from (configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) {
    exclude 'META-INF/*.SF'
    exclude 'META-INF/*.DSA'
    exclude 'META-INF/*.RSA'
}

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

java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/my-database
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:208)
    at my.package.Main.getConnection(Main.java:146)

Как мне сделать так, чтобы у меня внутри jar были оба драйвера и я мог общаться и с postgre и c mssql?

Answer 1

В общем, решением стало следующее ( : 1. Убрать зависимости от драйверов конфиге

dependencies {
}
  1. Положить скаченные jdbc драйвера рядом
  2. Запускать собранный jar с указанием classpath'a :

    java -cp myApp.jar:postgresDriver.jar:mssqlDriver.jar my.app.Main

READ ALSO
Обновить TextView после закрытия alerdDialog

Обновить TextView после закрытия alerdDialog

В каком направлении копать? Есть активити, при нажатии на кнопку вызывается alerdDialog в котором выходит список (массив) цифр, при выборе меняется...

173
Наложение цвета на background-image

Наложение цвета на background-image

у меня есть header, как наложить цвет именно на картинку в фоне?

172
Стрелка при наведении

Стрелка при наведении

Здравствуйте? Каким методом реализуется подобное? При наведении должна появляться стрелка в виде треугольника как на скриншоте?

165
z-index, убрать блоки под родителя

z-index, убрать блоки под родителя

как убрать блоки линий за серый фон снизу, если этот фон для них родитель, а блоки с отрицательным margin? Пробовал z-index, не получаетсяТ

171