Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试运行jar时出现NoClassDefFoundError_Java_Spring_Spring Boot_Spring Boot Actuator_Spring Cloud Dataflow - Fatal编程技术网

Java 尝试运行jar时出现NoClassDefFoundError

Java 尝试运行jar时出现NoClassDefFoundError,java,spring,spring-boot,spring-boot-actuator,spring-cloud-dataflow,Java,Spring,Spring Boot,Spring Boot Actuator,Spring Cloud Dataflow,我的代码编译得很好,但是当我尝试运行我的Jar时,我在堆栈跟踪中得到以下错误 java.lang.IllegalStateException: Error processing condition on org.springframework.cloud.stream.config.codec.kryo.KryoCodecAutoConfiguration Caused by: java.lang.IllegalStateException: Failed to introspect Class

我的代码编译得很好,但是当我尝试运行我的Jar时,我在堆栈跟踪中得到以下错误

java.lang.IllegalStateException: Error processing condition on org.springframework.cloud.stream.config.codec.kryo.KryoCodecAutoConfiguration
Caused by: java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud.stream.config.ChannelBindingAutoConfiguration] from ClassLoader       [org.springframework.boot.loader.LaunchedURLClassLoader@439f5b3d]

Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/actuate/endpoint/AbstractEndpoint
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.actuate.endpoint.AbstractEndpoint
我也在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-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-streams</artifactId>
        <version>1.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>
以及以下

package demo.example.jobIDProcessor;

import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Processor;
import org.springframework.integration.annotation.Transformer;


@EnableBinding(Processor.class)
public class JobIDProcessorConfig {
 @Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT)
    public String fetchJD(String jobID) {
        return "ye raha JD of "+jobID;
    }
}

从哪里调用“org/springframework/boot/actuate/endpoint/AbstractEndpoint”?

这主要与您正在使用的云流依赖项版本有关。请尝试在pom.xml中添加以下内容

 <dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-dependencies</artifactId>
            <version>Fishtown.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/libs-snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

org.springframework.boot
spring启动依赖项
释放
聚甲醛
进口
org.springframework.cloud
spring云流依赖性
Fishtown.BUILD-SNAPSHOT
聚甲醛
进口
春季快照
春季快照
https://repo.spring.io/libs-snapshot
真的

这将指向cloud stream dependencies的最新版本,它指的是actuator的正确版本

您似乎正在构建一个Spring cloud stream应用程序。您是否也可以编辑显示全部依赖项的帖子?还有一件事。除了执行器,您还需要添加
spring boot starter web
,以便能够通过HTTP访问执行器端点。是的,我正在尝试使用spring云数据流。在添加SpringBootStarterWeb之后,我也尝试了。还是一样的错误。奇怪!几件事:1)
KryoCodecAutoConfiguration
不再在SpringCloudStream2.0中;它曾经出现在1.3.x中-不知道为什么在stacktrace中会出现这种情况。2) 看起来您使用的是Rabbit binder,但您也有KStreams库-为什么不能直接使用KStream binder?为了清楚起见,请从Initializer下载一个全新的应用程序,并将其打包到uber jar。请按照中的说明进行操作。一旦它通过
java-jar…
独立运行,它也将在SCDF中工作。现在工作正常!在我最初的演示中,我添加了RabbitMQ和kafka作为依赖项。但现在,当我从头开始创建独立的应用程序时,它工作得很好!谢谢@SabbyAnandan
package demo.example.jobIDProcessor;

import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Processor;
import org.springframework.integration.annotation.Transformer;


@EnableBinding(Processor.class)
public class JobIDProcessorConfig {
 @Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT)
    public String fetchJD(String jobID) {
        return "ye raha JD of "+jobID;
    }
}
 <dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-dependencies</artifactId>
            <version>Fishtown.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/libs-snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>