我试图了解如何通过 maven 告诉 WildFly,需要某些库。我在 eclipse-jee 中有一个 Maven 项目。当我调用一个单独工作的支持类的 JSP 时,一切正常。但是当我调用一个 JSP,它的支持类使用库中的一个类时,我得到一个 ClassNotFoundException。当我在本地而不是在服务器上运行该支持类时,它可以完美运行。该库被添加为 maven 依赖项,只要我留在本地就可以了。但是当我将 WAR 部署到 WildFly 时,并没有部署该库。
这是我的POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<name>hello_neo4j</name>
<artifactId>myNeo4j</artifactId>
<dependencies>
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>2.0.SP1</version>
</dependency>
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams</artifactId>
<version>1.0.3</version>
</dependency>
</dependencies>
<groupId>com.my-domain</groupId>
<version>0.0.1</version>
<packaging>war</packaging>
</project>
一旦我尝试实例化org.neo4j.driver.Config,我得到:
...
Caused by: java.lang.ClassNotFoundException: org.neo4j.driver.Config from [Module "deployment.hello_neo4j.war" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:255)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
... 59 more
那么,我如何告诉 Eclipse,它应该将库打包到 WAR 中还是将其与 WAR 一起部署?我想,POM 中的某处应该有任何说明要部署依赖项的内容,但我不知道如何部署。在有效的 POM中,我看到<scope>compile</scope>
并且我认为,这意味着依赖项将被编译到 POM 中。但显然,我需要更多的东西,但是什么?
提前感谢您的有用评论!