GlassFish / Payara - определенные броски зависимостей maven ClassNotFoundException - PullRequest
0 голосов
/ 19 апреля 2019

Я создаю небольшое веб-приложение на основе Java EE, используя maven в качестве инструмента для сборки.В качестве сервера приложений я использую GlassFish 5 / Payara 5.

. Компиляция текущей версии работает без проблем, как и развертывание.Вызов некоторых конечных точек REST также работает нормально.Только когда я вызываю конечные точки REST, которые используют ресурсы из сторонних библиотек - в этом случае HtmlUnit - я получаю следующую ошибку StackTrace.

У меня есть прямое сравнение с приложением не на основе EE, где эта конфигурация работала нормально,

Я изучил специфичные для maven источники ошибок, такие как проблема с предоставленным / скомпилированным тегом области действия, но ничего не нашла.В самом приложении библиотечные классы только вызываются или создаются, так что это не должно быть проблемой.

Я подозреваю источник ошибки в контексте инфраструктуры Java EE, но я просто не могу найти егоиз-за недостатка опыта.

Выдержка из pom.xml:

<dependencies>
        <!-- https://mvnrepository.com/artifact/javax/javaee-api -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>8.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit -->
        <dependency>
            <groupId>net.sourceforge.htmlunit</groupId>
            <artifactId>htmlunit</artifactId>
            <version>2.34.1</version>
        </dependency>

...
</dependencies>

Выдержка из StackTrace:

[2019-04-19T19:00:11.284+0200] [glassfish 5.0] [WARNING] [] [javax.enterprise.web] [tid: _ThreadID=27 _ThreadName=http-listener-1(3)] [timeMillis: 1555693211284] [levelValue: 900] [[
  StandardWrapperValve[com.webanalytics.toolbox.api.rest.scraperequest.RestRequestConfig]: Servlet.service() for servlet com.webanalytics.toolbox.api.rest.scraperequest.RestRequestConfig threw exception
java.lang.ClassNotFoundException: com.gargoylesoftware.htmlunit.html.HtmlPage
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1621)
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1471)

1 Ответ

0 голосов
/ 09 июня 2019

Мне удалось решить проблему.Это произошло потому, что в процессе сборки maven библиотеки просто упаковывались в верхний уровень каталога ear вместо каталога lib.Добавление в -tag в родительском pom.xml было решением.

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <version>8</version>
                    <defaultLibBundleDir>lib</defaultLibBundleDir>
                    <modules>
                        <webModule>
                            <groupId>com.webanalytics-toolbox</groupId>
                            <artifactId>scraper-web</artifactId>
                            <contextRoot>/</contextRoot>
                        </webModule>
                    </modules>
                </configuration>
            </plugin>
...