【问题标题】:Spring-boot config server application throw exceptionSpring-boot 配置服务器应用程序抛出异常
【发布时间】:2018-09-06 08:31:11
【问题描述】:

我在 Mac OS X 上运行 spring 云配置服务器的简单演示。应用程序具有本地作为活动配置文件,并使用本地文件夹而不是 git 来存储配置文件。当我启动应用程序时,它会引发异常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jgit/api/TransportConfigCallback
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.getDeclaredMethods(Class.java:1975)
    at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613)
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524)
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:510)
    at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:570)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:697)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:640)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:609)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1484)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:425)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:395)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:515)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:508)
    at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1188)
    at org.springframework.boot.SpringApplication.getExitCodeFromMappedException(SpringApplication.java:818)
    at org.springframework.boot.SpringApplication.getExitCodeFromException(SpringApplication.java:804)
    at org.springframework.boot.SpringApplication.handleExitCode(SpringApplication.java:790)
    at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:744)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
    at com.test.docker.DemoConfigServerApplication.main(DemoConfigServerApplication.java:12)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jgit.api.TransportConfigCallback
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 24 more

pom.xml

<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.demo.config</groupId>
    <artifactId>demo-config-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo-config-server</name>
    <description>Demo config project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Edgware.SR2</spring-cloud.version>
    </properties>

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

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

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

application.yml

server:
  port: 8888
spring:
  application:
    name: demo-config
  profiles:
    active: native
  cloud:
    config:
      server:
        native:
          search-locations: file:///Users/macosx/cloud/config-local

我在工作场所的 Windows 7 机器上运行了类似的示例,它运行良好。有谁知道可能是什么问题?

谢谢

【问题讨论】:

  • 清除您的本地存储库,可能是一个破旧的 jar。运行mvn dependency:purge-local-repository,然后重建您的应用程序以下载依赖项。
  • @M.Deinum 谢谢,它解决了问题。当我在项目目录中运行命令时,它在 .m2 目录中的 aws sdk 中显示错误 'Non-parseable POM /Users/macosx/.m2/repository/com/amazonaws/aws-java-sdk-pom/1.11.125/aws- java-sdk-pom-1.11.125.pom'。我删除了文件夹并再次运行命令,我能够构建和运行应用程序。如果您可以将此作为答案发布,我会接受。非常感谢您的解决方案。

标签: spring-boot spring-cloud spring-cloud-config


【解决方案1】:

在 application.yaml 的最后一行使用 searchLocations 而不是 search-locations。

【讨论】:

  • 我已经尝试使用 searchLocations 但仍然会出现同样的异常。在 spring-tool-suite 建议中,会显示 search-locations 而不是 searchLocations,这就是我使用 search-locations 的原因。
  • 对于 Spring Boot searchLocationssearch-locations 是一样的。
【解决方案2】:

通常当这些错误弹出时,maven 下载依赖项时会出错。为了解决这个问题,请从无聊的依赖项中清除您的本地存储库。

你基本上有两种方法可以解决这个问题

  1. 直截了当地删除完整的~/.m2/repository目录,删除所有本地依赖
  2. 更微妙的mvn dependency:purge-local-repository 用于从~/.m2/repository 目录中删除所有项目依赖项。

之后只需重建您的应用程序mvn package 以再次下载依赖项。

【讨论】:

  • 这个答案已经帮助我解决了由于存储库冲突导致的“ClassNotFound”和其他误导性错误消息的几个问题。
猜你喜欢
  • 2018-10-22
  • 1970-01-01
  • 2023-03-06
  • 2020-06-02
  • 2022-01-22
  • 2023-03-12
  • 1970-01-01
  • 2019-09-06
  • 1970-01-01
相关资源
最近更新 更多