我试图了解如何通过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中。但显然,我需要更多的东西,但是呢?
提前感谢您的有用评论!
在发布问题之前,我已经搜索了很长时间......但是现在,在发布后不久,我找到了答案:只需另一个依赖项即可使服务器能够从部署的POM解析依赖项:
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.0.0-M1</version>
<type>maven-plugin</type>
<scope>runtime</scope>
</dependency>
希望这可能有助于其他人比我搜索更短的时间。