当前位置: 首页 > 知识库问答 >
问题:

使用 Spring 安全性配置 Spring 引导会使构建失败,因为引用缺少依赖项

盖高畅
2023-03-14

无论何时尝试运行mvn安装,在Spring Boot项目上,构建都会失败,原因是:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

未能执行goal org . Apache . maven . plugins:maven-compiler-plugin:3.3:对project wave进行编译(默认编译):编译时出现致命错误:Java . lang . runtime exception:com . sun . tools . javac . code . symbol $ completion failure:org . spring framework . security . LDAP . defaultspringsecuritycontextsource的类文件未找到-

有两件事解决了这个问题:

> < li>

删除以下安全性配置

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

  @Inject
  private UserDetailsService userDetailsService;

  @Inject
  public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth
      .userDetailsService(userDetailsService);
  }

  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http
      .httpBasic()
        .realmName("Wave")
        .and()
      .authorizeRequests()
        .antMatchers(HttpMethod.POST, "/wave/service/employees/**").anonymous()
        .antMatchers("/wave/service/**").authenticated()
        .and()
      .sessionManagement()
        .sessionCreationPolicy(SessionCreationPolicy.STATELESS);
  }

}

当然,删除配置不是一种选择,因为它禁用了我的应用程序的安全性

添加以下依赖项

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-ldap</artifactId>
</dependency>

然而,在添加它使错误消失的同时,出现了一个新的类似错误(只是指向另一个类):

无法在项目波上执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile):编译时出现致命错误:java.lang.RuntimeException:com.sun.tools.javac.code.Symbol$CompletionFailure:org.springframework.security.openid.OpenIDAttribute 的类文件 -

再次解决此问题,我添加了以下依赖项:

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-openid</artifactId>
    </dependency>

这再次解决了问题,但出现了另一个错误:

未能在项目波上执行目标org.apache.maven.plugins:maven编译器插件:3.3:编译(默认编译):编译时出现致命错误:java.lang.RuntimeException:com.sun.tools.javac.code。符号$CompletionFailure:org.apache.http的类文件。未找到标题-

最后,添加以下依赖项修复了所有问题:

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.1</version>
    </dependency>

但是,我现在有多个未使用的依赖项。

有没有其他方法可以解决这个问题?

共有2个答案

景宏盛
2023-03-14

删除您的依赖项并添加它;在我移除之后,这个对我来说很好用

<dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.1</version>
    </dependency>

'

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>

这是我的pom。xml文件

    <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <exclusions>

        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>            
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security.oauth</groupId>
        <artifactId>spring-security-oauth2</artifactId>
        <version>2.0.9.RELEASE</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
</dependencies>
叶鸿
2023-03-14

我通过更换

<dependency>
   <groupId>org.eclipse.persistence</groupId>
   <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
   <version>2.6.4</version>
   <scope>provided</scope>
</dependency>

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-jpamodelgen</artifactId>
  <version>5.0.12.Final</version>
</dependency>

我认为org.eclipse.persistence.jpa.modelgen.processor中存在这个问题

 类似资料:
  • 我正在开发一个用户管理API在一个Spring启动,我做了最需要的实体类,服务和存储库,但我错过了一些我看不到的东西。我想出了我的pom.xml执行我的主类,但它找不到它。当我运行"./mvnw sping-引导:运行"在我的项目目录下,它抛出了下面的构建失败: 我的pom.xml: 请,我会很高兴与任何帮助!谢谢

  • 在我的项目中,一切都很完美,但我明白这一点。 所以我应该在我的gradle文件中添加google-service。 这些是我的依赖。 基本上,我使用GoogleAppClient对象来获取我的当前位置。我与地图或GCM无关。 有没有办法解决这个问题?我环顾四周,但还是有问题。 谢谢。

  • 我花了相当长的时间试图找出解决我问题的办法,但毫无结果。 无论如何,我有一堆集成测试(在一个与标准测试目录并行的非标准目录testRegression中)。 这些集成测试使用内存数据库中的h2。在生产和测试中,我使用liquibase来模拟模式演变。 我的属性(在应用程序testregion.properties中)如下所示: 我一直得到的错误是: 那么我该如何回避这个问题呢?我的基本理解是,每个

  • 你好,我在使用Ldap创建简单登录时遇到问题。我已经从spring.io网站下载了入门项目:入门LDAP。 它可以很好地与ldif文件配合使用,但我想用运行ldap服务器来代替它。我已经试了好几天了,没有任何进展。我用这段代码获得了最好的结果(替换为getting started project的WebSecurity配置) 如果我尝试使用格式为“用户名”“密码”的良好用户名和密码登录控制台输出:

  • 我有一个带应用程序的spring boot应用程序。属性文件和spring数据jpa。在应用程序中,我有一个外部依赖项,需要加载外部Spring项目的bean,该项目具有基于xml的配置。外部xml有自己的组件扫描和spring jpa设置,可以与应用程序中提供该DB属性的其他DB进行交互。属性文件,我正在使用@ImportResources将其bean注入父应用程序。但是,当我在做这个sprin

  • 我们在应用程序中定义了属性。属性,将该属性拉入一个springboot@Configuration注释类以用于初始化正在创建的bean是否合适。请参阅下面的代码片段 最简单的例子是创建一个在应用程序中配置了url、驱动程序、用户名和密码的数据源实例。性质 是否恰当?继续以这种方式使用可能产生什么后果?