• Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

    amk4
    @amk4 Автор вопроса
    Dmitry Roo, спасибо
    начал с этого - получил
    java.lang.UnsupportedClassVersionError: org/apache/logging/log4j/core/LoggerContext has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 60.0

    но вообще, оказалось, как всегда RTFM...

    а) Important: SoapUI 5.6 or later does not support HermesJMS.
    б) SoapUI Open Source 5.6.0 move to openjdk 12

    В старой SoapUI 5.5.0 (которая сама на 8й джаве) все заработало...
    Спасибо за помощь, буду искать замену JMS коннектору.
    Написано
  • Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

    amk4
    @amk4 Автор вопроса
    Dmitry Roo, можно еще вопрос в продолжение?

    Проблема решилась, но поверхностно. Вопрос - можно ли подружить два разных приложения?

    Получилось-то запустить и настроить _отдельно_ SoapUI (SmartBear) и его (старый и брошенный) тул HermesJMS.

    В запускающий скрипт гермеса hermes.sh прописал путь к 8-й джаве - он нормально стартует, я в нем настроил сессию к JMS-серверу - все ок

    Но когда необходимо обращение к JMS-северу из проекта в SoapUI - дергается же напрямую hermes-1.14.jar, а не подправленный мной стартовый hermes.sh

    И пытается он запуститься, видимо, в окружении версии джавы Soap'а. Соответственно. получаю ошибку:

    2024-07-23 15:13:22,722 ERROR [errorlog] java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    	at hermes.HermesInitialContextFactory.<clinit>(HermesInitialContextFactory.java:40) ~[hermes-1.14.jar:?]
    	at java.lang.Class.forName0(Native Method) ~[?:?]
    	at java.lang.Class.forName(Class.java:468) ~[?:?]
    	at com.sun.naming.internal.VersionHelper.loadClass(VersionHelper.java:123) ~[?:?]
    	at com.sun.naming.internal.VersionHelper.loadClass(VersionHelper.java:96) ~[?:?]
    	at javax.naming.spi.NamingManager.getFactory(NamingManager.java:746) ~[?:?]
    	at javax.naming.spi.NamingManager.lambda$getInitialContext$1(NamingManager.java:711) ~[?:?]
    	at jdk.internal.loader.AbstractClassLoaderValue$Memoizer.get(AbstractClassLoaderValue.java:329) ~[?:?]
    	at jdk.internal.loader.AbstractClassLoaderValue.computeIfAbsent(AbstractClassLoaderValue.java:205) ~[?:?]
    	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:711) ~[?:?]
    	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305) ~[?:?]
    	at javax.naming.InitialContext.init(InitialContext.java:236) ~[?:?]
    	at javax.naming.InitialContext.<init>(InitialContext.java:208) ~[?:?]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils.getHermes(HermesUtils.java:115) ~[soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils.hermesContext(HermesUtils.java:84) ~[soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils.getHermes(HermesUtils.java:225) ~[soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.HermesJmsRequestTransport.getHermes(HermesJmsRequestTransport.java:182) ~[soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.HermesJmsRequestTransport.init(HermesJmsRequestTransport.java:100) ~[soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.HermesJmsRequestSendReceiveTransport.execute(HermesJmsRequestSendReceiveTransport.java:36) [soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.HermesJmsRequestTransport.sendRequest(HermesJmsRequestTransport.java:95) [soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:120) [soapui-5.6.1.jar:5.6.1]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
    	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) [?:?]
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) [?:?]
    	at java.lang.Thread.run(Thread.java:832) [?:?]
    Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:435) ~[?:?]
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[?:?]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils$ReverseOrderClassLoader.innerLoadClass(HermesUtils.java:278) ~[soapui-5.6.1.jar:5.6.1]
    	at com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils$ReverseOrderClassLoader.loadClass(HermesUtils.java:263) ~[soapui-5.6.1.jar:5.6.1]
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
    	... 26 more
    Написано
  • Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

    amk4
    @amk4 Автор вопроса
    Спасибо за совет, заодно немного просветился по этому направлению.

    Впихнуть старую rt.jar в 9-ю джаву методом тыка так и не получилось )))

    Но, соответственно, вопрос решился применение домодульной джавы (8-й), как посоветовали в предыдущих комментариях.
    Написано
  • Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

    amk4
    @amk4 Автор вопроса
    В целом, спасибо за направление.

    Проблема действительно решилась 8-й джавой.
    Насколько я понял из второго ответа по этому вопросу - в 9-й добавили модульность и это стало причиной несовместимости.

    А следующая ошибка, полученная уже на 8-й джаве интуитивно решилась заменой комплектной jar-ки xercesImpl.jar из /lib Гермеса на аналогичную из клиента целевого JMS-сервера (Aurea Sonic).
    Написано
  • Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

    amk4
    @amk4 Автор вопроса
    Почитал, даже что-то понял, но легче пока не стало...
    с 9-й джавы, ее решили разбить на модули и rt.jar из отдельной джарки переехал( ли?) в modules

    Если я вижу ошибку NoClassDefFoundError: sun/reflect/Reflection - значит:
    либо все-таки rt.jar с этим классом не вошел в modules
    либо этот модуль(и) не подключены...

    Пробовал
    soap@amk175:~$ java --module-path /usr/java/jdk/jdk-9/lib/
    Error occurred during initialization of boot layer
    java.lang.LayerInstantiationException: Package jdk.internal.jimage in both module java.base and module jrt.fs

    Видимо, файл модулей конфликтует с остальными библиотеками (зачем тогда их в одной папке разместили?)

    Попробовал файл modules в отдельную папку вынести
    soap@amk175:~$ java --module-path /opt/modules9/
    В ответ вылетает хелп - что-то неверно я в синтаксисе

    Добавил -p с путями к modules в старт приложения - но ожидаемо ничего не изменилось
    Написано
  • Как добавить jar с требуемым классом при ошибке ClassNotFoundException?

    amk4
    @amk4 Автор вопроса
    Поведение изменилось, ошибка уже другая...
    soap@amk175:~$ java -version
    java version "1.8.0_261"
    Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
    
    soap@amk175:~$ /opt/HermesJMS/bin/hermes.sh
    Jul 18, 2024 11:11:58 PM com.sun.xml.internal.bind.v2.util.XmlFactory createParserFactory
    SEVERE: null
    org.xml.sax.SAXNotRecognizedException: Feature 'http://javax.xml.XMLConstants/feature/secure-processing' is not recognized.
            at org.apache.xerces.parsers.AbstractSAXParser.setFeature(Unknown Source)
            at org.apache.xerces.jaxp.SAXParserImpl.setFeatures(Unknown Source)
            at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
            at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParserImpl(Unknown Source)
            at org.apache.xerces.jaxp.SAXParserFactoryImpl.setFeature(Unknown Source)
            at com.sun.xml.internal.bind.v2.util.XmlFactory.createParserFactory(XmlFactory.java:121)
            at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.getXMLReader(UnmarshallerImpl.java:139)
            at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:276)
            at hermes.JAXBHermesLoader.load(JAXBHermesLoader.java:302)
            at hermes.HermesContext.load(HermesContext.java:57)
            at hermes.HermesInitialContextFactory.getInitialContext(HermesInitialContextFactory.java:95)
    ...
    Написано
  • Как запустить gitlab triggered pipeline по референсу tag, а не branch?

    amk4
    @amk4 Автор вопроса
    Ну да, походу так и есть... По тегам не приходилось запускать, ожидалось немного иначе...
    Спасибо.
    Написано
  • Можно ли анализировать логи job самим gitlab-runner'ом?

    amk4
    @amk4 Автор вопроса
    Да, это я чего-то сморозил...
    Можно же только tee оставить, а перенаправление не выполнять ))
    Спасибо.
    Написано
  • Можно ли анализировать логи job самим gitlab-runner'ом?

    amk4
    @amk4 Автор вопроса
    хм, оказалось robocorp уже сам складывает копию stdout тестов в соответствующий файлик.
    Его разбор и сделал.

    Остался вопрос на будущее, можно ли и перенаправить stdout через >/>> и не потерять его вывод в логе джоба?
    Написано
  • Можно ли анализировать логи job самим gitlab-runner'ом?

    amk4
    @amk4 Автор вопроса
    Ну да, я и собирался перенаправлять stdout в файл, если не посоветуют более оптимального варианта.
    Из минусов - в логе джоба информации уже не будет, придется смотреть артефакты.
    Написано
  • Можно ли анализировать логи job самим gitlab-runner'ом?

    amk4
    @amk4 Автор вопроса
    Как раз так корректно, процедура тестирования проходит успешно.
    В ней много тестов и если один/несколько FAILED по прикладным причинам - это не повод прерывать джоб и считать весь джоб failed.
    Написано
  • Можно ли анализировать логи job самим gitlab-runner'ом?

    amk4
    @amk4 Автор вопроса
    А как раннером (который у себя на узле бежит) добавить логи, которые на самом гитлабе лежат?
    Написано
  • Не открывается Word, кроме как от имени администратора, в чем проблема?

    Может в Просмотре событий в разделе безопасность есть какие-то сообщения по поводу запуска.
    Написано
  • Можно ли анализировать логи job самим gitlab-runner'ом?

    amk4
    @amk4 Автор вопроса
    Да.
    Джоб заканчивается успешно.
    А в логе - результаты тестов (robocorp) - VALID или FAILED.
    Написано
  • Как обернуть if для исполнения раннером через powershell?

    amk4
    @amk4 Автор вопроса
    А про построчно - я так и попробовал, но надо было добавить индикатор: |
    в комментарии к предыдущему ответу подсказали.
    Написано
  • Как обернуть if для исполнения раннером через powershell?

    amk4
    @amk4 Автор вопроса
    О, спасибо, надо же, скалярные блоки...
    Как-то не пришло в голову, что это тот же yaml, что и для bash'а...
    Написано
  • Как обернуть if для исполнения раннером через powershell?

    amk4
    @amk4 Автор вопроса
    Проходит и просто:
    script:
        - C:\gitlab-runner\network.ps1


    Shell executor указан в config.toml
    Написано
  • Какой grant необходим для pg_restore?

    amk4
    @amk4 Автор вопроса
    Ну, суперюзером-то проходит успешно.
    Получается - только так?
    Написано
  • Какой grant необходим для pg_restore?

    amk4
    @amk4 Автор вопроса
    Это как?

    GRANT ALL ON SCHEMA task_manager TO dbadm;
    ERROR:  schema "task_manager" does not exist
    Написано
  • Почему подвисает Git Extensions и git log при вывода истории файла из большого репозитория?

    amk4
    @amk4 Автор вопроса
    По разделению истории - спасибо, интересно было попробовать.
    Общая история после replace правильно склеилась, только как-то странно повела себя после удаления remote.
    Хотел посмотреть что именно произойдет после удаления remote с бОльшей частью отсеченной истории. Ожидал, что "обрезанный" основной репозиторий вернется к состоянию до разделяющего коммита (после rebase), и можно будет remote подключать/отключать по мере необходимости.
    А репозиторий вернулся к полному начальному варианту со всеми коммитами, как до процедуры rebase.

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

    В целом, видимо, пока вопрос откладывается до обсуждения реструктуризации репозитория.
    Еще раз спасибо за помощь!
    Написано