我有一个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>
答案 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>