【问题标题】:How to fix module not found: spring.web and similar errors如何修复找不到模块:spring.web 和类似错误
【发布时间】:2019-10-28 14:23:46
【问题描述】:

我正在尝试使用 Java 11 构建一个简单的 maven spring-rest 应用程序,但我不断收到“模块未找到错误”。

我阅读了很多关于 SO 的类似问题。我尝试了各种建议 - 删除 maven 存储库,解决一些警告等,但我仍然无法使项目工作。

我的父母 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.luv2code</groupId>
   <artifactId>spring-rest-demo</artifactId>
   <version>1.0</version>
    <modules>
        <module>nedim</module>
    </modules>
    <packaging>pom</packaging>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <maven.compiler.source>11</maven.compiler.source>
      <maven.compiler.target>11</maven.compiler.target>
   </properties>

   <dependencies>

      <!-- Add Spring MVC and REST support -->
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-webmvc</artifactId>
         <version>5.0.5.RELEASE</version>
      </dependency>

      <!-- Add Jackson for JSON converters -->
      <dependency>
         <groupId>com.fasterxml.jackson.core</groupId>
         <artifactId>jackson-databind</artifactId>
         <version>2.9.5</version>
      </dependency>

      <!-- Add Servlet support for 
          Spring's AbstractAnnotationConfigDispatcherServletInitializer -->
      <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <version>3.1.0</version>
      </dependency>
   </dependencies>

   <!-- Support for Maven WAR Plugin -->

   <build>

      <finalName>spring-rest-demo</finalName>

      <pluginManagement>
         <plugins><plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.0</version>               
            </plugin>                 
         </plugins>
      </pluginManagement>
   </build>

</project>

儿童 pom:

<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>spring-rest-demo</artifactId>
        <groupId>com.luv2code</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>nedim</artifactId>


</project>

模块信息.java:

open module nedim {
    requires spring.context;
    requires spring.webmvc;
    requires spring.web; 
}

当我运行 maven clean install 时,我得到以下信息:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project nedim: Compilation failure: Compilation failure: 
[ERROR] /D:/Workspace/Java/spring-rest-demo/nedim/src/main/java/module-info.java:[2,24] module not found: spring.context
[ERROR] /D:/Workspace/Java/spring-rest-demo/nedim/src/main/java/module-info.java:[3,24] module not found: spring.webmvc
[ERROR] /D:/Workspace/Java/spring-rest-demo/nedim/src/main/java/module-info.java:[4,24] module not found: spring.web
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :nedim

另外,我添加到 VM 选项 --show-module-resolution 并且列表中没有 spring 模块

【问题讨论】:

    标签: java spring maven module-path


    【解决方案1】:

    主要问题是:org.apache.maven.plugins:maven-compiler-plugin:3.1:compile。这是一个非常旧的版本,不支持 JPMS。请更新到 3.8.1

    【讨论】:

    • 谢谢,罗伯特!实际上,半小时前我在stackoverflow.com/questions/46939741/… 找到了您对稍微不同的问题的答案,它解决了我的问题。但是现在我遇到了另一个问题:在项目初始化期间似乎没有使用我的 Spring 配置和控制器中的映射(全部在 'nedim' 模块中 - 模块名称仅用于测试)。我错过了什么?现在不应该初始化spring-container吗?
    • 对不起...我刚刚注意到日志:Artifact unnamed: com.intellij.javaee.oss.admin.jmx.JmxAdminException: com.intellij.execution.ExecutionException: D:\Workspace\Java\没有为 web 模块找到 spring-rest-demo\out\artifacts\unnamed\unnamed.war。我不确定这意味着什么,但显然这是个问题。
    • 解决方案在这里:stackoverflow.com/questions/43244946/… 我正在制作此记录,以供有相同问题的人参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    相关资源
    最近更新 更多