Maven无法编译Spring Security演示项目

时间:2014-06-17 08:25:30

标签: maven spring-security

我有一个Maven演示项目,我使用了一些Spring Security功能。

我可以很好地将项目导入Eclipse STS,编辑器没有显示与依赖项相关的错误。

但是在命令行上编译的Maven命令失败。

我收到以下错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project learnintouch-web: Compilation failure: Compilation failure:
[ERROR] /home/stephane/dev/java/projects/learnintouch-web/src/main/java/com/thalasoft/learnintouch/web/config/WebSecurityConfiguration.java:[7,78] package org.springframework.security.config.annotation.authentication.builders does not exist
[ERROR] /home/stephane/dev/java/projects/learnintouch-web/src/main/java/com/thalasoft/learnintouch/web/config/WebSecurityConfiguration.java:[8,67] package org.springframework.security.config.annotation.web.builders does not exist
[ERROR] /home/stephane/dev/java/projects/learnintouch-web/src/main/java/com/thalasoft/learnintouch/web/config/WebSecurityConfiguration.java:[9,72] package org.springframework.security.config.annotation.web.configuration does not exist
[ERROR] /home/stephane/dev/java/projects/learnintouch-web/src/main/java/com/thalasoft/learnintouch/web/config/WebSecurityConfiguration.java:[10,72] package org.springframework.security.config.annotation.web.configuration does not exist
[ERROR] /home/stephane/dev/java/projects/learnintouch-web/src/main/java/com/thalasoft/learnintouch/web/config/WebSecurityConfiguration.java:[19,47] cannot find symbol
[ERROR] symbol: class WebSecurityConfigurerAdapter
[ERROR] /home/stephane/dev/java/projects/learnintouch-web/src/main/java/com/thalasoft/learnintouch/web/config/WebSecurityConfiguration.java:[15,2] cannot find symbol
[ERROR] symbol: class EnableWebSecurity
[ERROR] /home/stephane/dev/java/projects/learnintouch-web/src/main/java/com/thalasoft/learnintouch/web/config/WebSecurityConfiguration.java:[25,34] cannot find symbol
[ERROR] symbol:   class AuthenticationManagerBuilder
[ERROR] location: class com.thalasoft.learnintouch.web.config.WebSecurityConfiguration
[ERROR] /home/stephane/dev/java/projects/learnintouch-web/src/main/java/com/thalasoft/learnintouch/web/config/WebSecurityConfiguration.java:[24,9] method does not override or implement a method from a supertype

这是pom.xml中的Spring Security依赖项:

<org.springframework.security.version>3.2.4.RELEASE</org.springframework.security.version>

<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-core</artifactId>
  <version>${org.springframework.security.version}</version>
</dependency>
<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-config</artifactId>
  <version>${org.springframework.security.version}</version>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-web</artifactId>
  <version>${org.springframework.security.version}</version>
</dependency>
<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-taglibs</artifactId>
  <version>${org.springframework.security.version}</version>
</dependency>

8 个答案:

答案 0 :(得分:7)

我通过从pom.xml工件上的spring-security-config删除此行来解决此问题:

   <scope>runtime</scope>

答案 1 :(得分:3)

您需要手动添加spring security library。

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>3.2.4.RELEASE</version>
</dependency>

答案 2 :(得分:0)

我彻底检查了依赖关系,现在构建了。 Spring依赖项之间存在一些冲突。

答案 3 :(得分:0)

我在一些Spring Security教程中遇到了同样的问题。这是由于版本冲突造成的。

更新您的POM以删除所有Spring依赖项的版本信息。然后抛出spring-framework-bom来处理你的版本,它应该可以工作。

<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-framework-bom</artifactId>
        <version>4.0.0.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
</dependencyManagement>

答案 4 :(得分:0)

在我的情况下,此错误是由版本冲突引起的

有java 8 maven应用程序,将版本更改为java7并制作了mvn eclipse:eclipse 从cmd它运行但是从eclipse给出错误: WebSecurityConfigurerAdapter无法解析为类型

项目显示所有罐子后,工作并不容易 安全罐没有显示 给出错误:WebSecurityConfigurerAdapter无法解析为类型

右键单击 从菜单中选择:configure - &gt;转换为maven项目 右键单击项目并选择properties-&gt; java构建路径: 检查java版本,删除不正确的java版本 用按钮[添加库]更改为ide的java版本 仍在属性窗口中选择:java编译器 编译器合规级别组 改为ide的java版本 它显示不正确的版本

就是这样

答案 5 :(得分:0)

似乎版本冲突问题。 我遇到了同样的问题,可以通过将弹簧安全版本从3.1.7更改为3.2.4来解决。 希望它可以帮助别人。

答案 6 :(得分:0)

我可以通过添加 springframework .version和 springsecurity .version的最新兼容版本来解决此问题。

例如:

<properties>
        <springframework.version>5.1.1.RELEASE</springframework.version>
        <springsecurity.version>5.1.1.RELEASE</springsecurity.version> 
</properties>

在依赖项中,我还添加了以下内容:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
    <version>5.1.1.RELEASE</version>
</dependency>


<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>5.1.1.RELEASE</version>
</dependency>

现在工作正常。

答案 7 :(得分:0)

如果您有spring boo项目,请添加以下依赖项,似乎缺少Spring安全jar

  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>