0

我试图了解如何通过 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 中。但显然,我需要更多的东西,但是什么?

提前感谢您的有用评论!

4

1 回答 1

-1

在发布问题之前,我已经搜索了很长时间......但是现在,发布后不久,我找到了答案:只需要另一个依赖项才能使服务器能够解决部署的 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>

希望,这可能会帮助其他人搜索比我更短的时间。

于 2020-06-20T08:07:40.597 回答