невозможно использовать автономный сценарий оболочки на основе liquibase - PullRequest
0 голосов
/ 24 сентября 2018

(Обмен собственным способом обхода через Q / A)

При попытке запустить liquibase в качестве автономного сценария оболочки я получил следующую ошибку из liquibase-3.6.2-bin.tar.gz:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/core/filter/Filter
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
        at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
        at java.lang.Class.getMethod0(Class.java:3018)
        at java.lang.Class.getMethod(Class.java:1784)
        at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.filter.Filter
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 7 more
█

После некоторого поиска в Google и проверки скрипта оболочки liquibase я скачал фляги для этих двух проектов:

Затем я создал каталог ./lib относительно того, где живет liquibase, и вставил в него следующие jar-файлы:

  • logback-classic-1.2.3.jar
  • logback-core-1.2.3.jar
  • slf4j-api-1.7.25.jar
  • slf4j-simple-1.7.25.jar

После этихПошаговые команды командной строки работали.

Я согласен с этими замечаниями, высказанными одним из авторов этой темы , в настоящее время sinc было бы трудно использовать liquibase в качестве отдельной утилиты:

1) В этом выпуске отсутствует необходимая библиотека, чтобы быть самодостаточной.2) Более того: упаковка банки Liquibase должна перейти от использования папки lib / к банке Uber со всеми необходимыми библиотеками.

Похоже, отчет об ошибке для той же проблемы в 3.6.0, но по крайней мере для меня в 3.6.2 это не было исправлено.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

liquibase имеет зависимости, это нормально.

вы можете собрать uberjar или папку lib (содержащую необходимые зависимости) с помощью инструмента сборки, также известного как maven или gradle.

более того,он позволяет упаковать скрипт-скрипт для запуска обновления базы данных из командной строки, например, в формате Zip.

0 голосов
/ 24 сентября 2018

После некоторого поиска в Google и проверки скрипта оболочки liquibase я скачал фляги для этих двух проектов:

Затем я создал каталог ./lib относительно того, где живёт ликвидабаза, и вставил в него следующие jar-файлы:

  • logback-classic-1.2.3.jar
  • logback-core-1.2.3.jar
  • slf4j-api-1.7.25.jar
  • slf4j-simple-1.7.25.jar

После этих шагов командаЛинейка liquibase работала.

Я согласен с этими замечаниями одного из авторов этой темы, поскольку в настоящее время было бы трудно использовать liquibase в качестве отдельной утилиты:

1)В этом выпуске отсутствует необходимая библиотека, чтобы быть самодостаточной.2) Более того: упаковка jar-файла Liquibase должна переключиться с использования папки lib / на jar-файл Uber со всеми необходимыми библиотеками.

Похоже, есть сообщение об ошибке для той же проблемы.в 3.6.0, но по крайней мере для меня в 3.6.2 это не было исправлено.

...