Java 尝试运行jar时出现NoClassDefFoundError
我的代码编译得很好,但是当我尝试运行我的Jar时,我在堆栈跟踪中得到以下错误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
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>