HP TestExportTool постоянно запрашивает зависимости - PullRequest
0 голосов
/ 03 июля 2018

У меня есть LeanFT проект, он работает правильно, когда я запускаю его из IDE. Я сгенерировал файл jar с maven-assembly-plugin.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <archive>
            <manifest>
                <mainClass>test.LeanFTest</mainClass>
            </manifest>
        </archive>
        <finalName>${project.artifactId}-fatjar-${project.version}</finalName>
        <appendAssemblyId>false</appendAssemblyId>
        <descriptors>
            <descriptor>src/main/assembly/leanft-assembly.xml</descriptor>
        </descriptors>
    </configuration>
</plugin>

Когда я пытаюсь выполнить его с помощью TestExportTool (для создания XML-файла для импорта ALM), я получаю различные сообщения об ошибках, например:

log4j: WARN JmDNS или serviceInfo не найдены

java.lang.UnsatisfiedLinkError: нет NTEventLogAppender

java.lang.NoClassDefFoundError

Я импортировал все необходимые классы, решил эти проблемы, но TestExportTool приходит с исключениями снова и снова. Я добавил эти зависимости, о которых сообщают сообщения об ошибках, но они не используются проектом, поэтому не уверен, почему он запрашивается.

   <dependency>
        <groupId>org.jmdns</groupId>
        <artifactId>jmdns</artifactId>
        <version>3.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.11.0</version>
    </dependency>
    <dependency>
        <groupId>org.dblock.log4jna</groupId>
        <artifactId>log4jna-api</artifactId>
        <version>2.0</version>
    </dependency>
    <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <version>1.21</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>

Файл leanft-assembly.xml:

<id>fat-tests</id>
<formats>
    <format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
    <dependencySet>
        <outputDirectory>/</outputDirectory>
        <useProjectArtifact>true</useProjectArtifact>
        <unpack>true</unpack>
        <scope>test</scope>
    </dependencySet>
</dependencySets>
<fileSets>
    <fileSet>
        <directory>${project.build.directory}/test-classes</directory>
        <outputDirectory>/</outputDirectory>
        <includes>
            <include>*.class</include>
        </includes>
        <useDefaultExcludes>true</useDefaultExcludes>
    </fileSet>
</fileSets>

Подробная трассировка стека последнего сообщения об ошибке:

Инструмент экспорта тестов Hewlett-Packard Enterprise LeanFT. [главная] отладка javax.jmdns.impl.JmDNSImpl - экземпляр JmDNS создан 2018-07-06 11: 17: 21,741 Исключение в потоке "main" java.lang.NoClassDefFoundErr или: org / apache / tools / ant / taskdefs / LogOutputStream в java.lang.ClassLoader.defineClass1 (собственный метод) в java.lang.ClassLoader.defineClass (Неизвестный источник) в java.security.SecureClassLoader.defineClass (Неизвестный источник) на java.net.URLClassLoader.defineClass (неизвестный источник) на java.net.URLClassLoader.access $ 100 (неизвестный источник) at java.net.URLClassLoader $ 1.run (неизвестный источник) at java.net.URLClassLoader $ 1.run (неизвестный источник) at java.security.AccessController.doPrivileged (собственный метод) на java.net.URLClassLoader.findClass (неизвестный источник) в java.lang.ClassLoader.loadClass (Неизвестный источник) в java.lang.ClassLoader.loadClass (Неизвестный источник) в java.lang.Class.forName0 (собственный метод) at java.lang.Class.forName (Неизвестный источник) на com.hp.lft.testexporttool.internal.JarFileLoader.getPublicClassesFrom JarFile (JarFileLoader.java:48) на com.hp.lft.testexporttool.internal.TestsExporter.export (TestsExporter .java: 26) в com.hp.lft.testexporttool.ExportTests.main (ExportTests.java:41) вызвано автор: java.lang.ClassNotFoundException: org.apache.tools.ant.taskdefs.LogOu tputStream на java.net.URLClassLoader.findClass (неизвестный источник) в java.lang.ClassLoader.loadClass (Неизвестный источник) at java.lang.ClassLoader.loadClass (неизвестный источник)

ОБНОВЛЕНИЕ 07.09. : Я добавил все зависимости, запрошенные TestExportTool. Я получаю следующее сообщение от Hewlett-Packard Enterprise LeanFT Test Export Tool:

[main] DEBUG javax.jmdns.impl.JmDNSImpl - создан экземпляр JmDNS 2018-07-09 13: 25: 17,419 bshpath.BshClassLoader

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Похоже, что NTEventLogAppender.dll недоступно в PATH. Подробнее о том, как и почему Log4J может использовать его здесь - это доступно в файле загрузки .zip.

Однако, это относится только к Log4J (v1.2), а не к Log4J 2 - похоже, что это то, что нужно в этих зависимостях? Для Log4J 2 привязка SLF4J должна быть org.apache.logging.log4j:log4j-slf4j-impl:2.11.0 (вместо org.slf4j:slf4j-log4j12:1.7.25).

0 голосов
/ 12 июля 2018

Проблема, вызванная подключаемым модулем JAR в IntelliJ IDEA. Я экспортировал тот же проект в Eclipse и сгенерировал файл JAR в меню «Файл» -> «Экспорт», и файл работает нормально при выполнении из ALM.

0 голосов
/ 05 июля 2018

По умолчанию maven не включает в сгенерированный jar все зависимости. Это всегда предполагает, что они уже существуют в целевой системе. У вас есть 2 возможности:

  1. Вставьте эти файлы JAR в папку $ classpath / libs Target Systems
  2. Сконфигурируйте свой проект maven для экспортируйте все зависимости как часть jar (это приведет к взрыву вашего файла jar)
  3. Не рекомендуется: Скопируйте файлы jar в папку lib \ ext вашего jre, где запущена система ALM . Они будут загружены в каждое приложение с использованием этого jre.
...