Я пытаюсь создать слегка модифицированную версию EJBCA, и, хотя я могу без проблем ее скомпилировать, я получаю исключение класса, не найденное из кода, который я не модифицировал. Поскольку существует множество развертываний EJBCA, я хотел бы попросить совета о том, как его развернуть. Модификации, которые я сделал в коде, минимальны (просто напечатали некоторую дополнительную информацию в журнале во время вычисления / проверки HMAC), поэтому не должны вызывать проблем сами по себе.
Я скачал ревизию 31372 (последнюю из загруженных) из хранилища стволов для проекта EJBCA (https://svn.cesecore.eu/svn/ejbca) и пытаюсь заставить его работать на виртуальной машине, на которой запущена новая версия. установка Ubuntu 18.04.1 LTS. Я использую пакет openJDK-8-jdk в качестве виртуальной машины, wildfly 10.1.0 Final (одна из ошибок, которая у меня исчезла, когда я переключился на рекомендованный Wildfly 10), и MariaDB 10.1 (пакет mariadb-server from хранилище Ubuntu).
После следования руководству, доступному в https://www.ejbca.org/docs/WildFly_10___JBoss_EAP_7.0.html, я могу без проблем создавать и развертывать проект, используя "ant clean deployear", но при попытке запустить Следующая команда в руководстве "ant runinstall", я получаю следующую ошибку:
[java] log4j:WARN Error during default initialization
[java] java.lang.NoClassDefFoundError: org/w3c/dom/ls/DocumentLS
[java] at java.base/java.lang.ClassLoader.defineClass1(Native Method)
[java] at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009)
[java] at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
[java] at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:802)
[java] at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
[java] at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
[java] at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
[java] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
[java] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
[java] at java.base/java.lang.ClassLoader.defineClass1(Native Method)
[java] at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009)
[java] at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
[java] at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:802)
[java] at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
[java] at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
[java] at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
[java] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
[java] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
[java] at org.apache.xerces.util.ObjectFactory.findProviderClass(Unknown Source)
[java] at org.apache.xerces.parsers.AbstractDOMParser.setDocumentClassName(Unknown Source)
[java] at org.apache.xerces.parsers.AbstractDOMParser.reset(Unknown Source)
[java] at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
[java] at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
[java] at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
[java] at org.apache.log4j.xml.DOMConfigurator$2.parse(DOMConfigurator.java:769)
[java] at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:871)
[java] at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:778)
[java] at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
[java] at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
[java] at org.apache.log4j.Logger.getLogger(Logger.java:117)
[java] at org.ejbca.ui.cli.infrastructure.library.CommandLibrary.<init>(CommandLibrary.java:44)
[java] at org.ejbca.ui.cli.infrastructure.library.CommandLibrary.<clinit>(CommandLibrary.java:39)
[java] at org.ejbca.ui.cli.EjbcaEjbCli.main(EjbcaEjbCli.java:29)
[java] Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ls.DocumentLS
[java] at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
[java] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
[java] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
[java] ... 33 more
[java] log4j:WARN No appenders could be found for logger (org.jboss.logging).
[java] log4j:WARN Please initialize the log4j system properly.
[java] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
[java] WARNING: An illegal reflective access operation has occurred
[java] WARNING: Illegal reflective access by org.xnio.nio.NioXnio$2 (file:/home/alpha1983/ejbca_svn/dist/ejbca-ejb-cli/lib/jboss-client.jar) to constructor sun.nio.ch.EPollSelectorProvider()
[java] WARNING: Please consider reporting this to the maintainers of org.xnio.nio.NioXnio$2
[java] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
[java] WARNING: All illegal access operations will be denied in a future release
СТРОИТЬ НЕУДАЧИ
Версия log4j, используемая и связанная с источниками EJBCA, - это log4j-1.2.17 (расположена здесь: https://svn.cesecore.eu/svn/ejbca/trunk/ejbca/lib/), довольно старая версия. Библиотека пытается найти класс DocumentLS, который устарел в xerces, поэтому я попытался использовать более низкую версию xerces, но не смог загрузить пакет из репозиториев Ubuntu, который бы реализовывал требуемый класс. Обновление log4j до более новой версии 2.x также не является решением, поскольку это повлечет за собой изменение кода EJBCA в слишком многих местах. Поскольку люди могут развертывать EJBCA, я предполагаю, что есть более простой способ обойти эту проблему, чем переписывать источники, поэтому я прошу совета.
Я предполагаю, что есть какое-то поле, которое я не настраиваю, но до сих пор я не смог выяснить, какое это поле, и хотел спросить совета по теме. заранее спасибо