【发布时间】:2019-09-09 22:30:54
【问题描述】:
我正在使用 maven 作为构建工具构建一个基于 Java EE 的小型 Web 应用程序。作为应用服务器,我使用 GlassFish 5/Payara 5。
当前版本的编译以及部署都没有问题。调用一些 REST 端点也可以正常工作。仅当我调用使用来自 3rd 方库的资源的 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)
【问题讨论】:
-
你如何部署你的应用程序?您的网络存档是否包含
htmlunit-2.34.1.jar? -
是的,它在WEB-INF目录下(WEB-INF/lib/htmlunit-2.34.1.jar)。我完全不知道问题可能是什么。
-
我可以排除这是由于 EJB 的配置。如果我不创建其中一个 htmlunit 类的实例,则可以毫无问题地部署和使用该应用程序。但是这个库的内容对我来说是不可用的。 Maven 还会自动加载我需要的所有其他库,所以乍一看这不是原因。有什么方法可以提供更多信息来帮助我获得更好的照片? ear文件的目录结构还是类似的?同时,我找不到我尚未尝试过的研究方法。
-
您是否尝试将 htmlunit jar 放入 glassfish libs 文件夹?那它有用吗?
标签: maven jakarta-ee glassfish maven-3 dependency-management