V2.7.0启动报错Failed to start bean 'outputBindingLifecycle'

Blade 已结 2 1982
Breeze
Breeze 剑圣 2021-02-20 13:53

一、该问题的重现步骤是什么?

1. 在eclipse,运行正常

2. 以blade-system为例,通过 java -Dfile.encoding=utf-8 -jar blade-system.jar --spring.profiles.active=prod 的方式部署生产运行就会报错

3. 


二、你期待的结果是什么?实际看到的又是什么?

期望的结果: 启动blade相关项目成功


实际看到的: 启动blade相关项目报错


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

BladeX、BladeX-Tool  V2.7.0  windows 2016


四、请提供详细的错误堆栈信息,这很重要。


2021-02-20 11:23:16.192 [com.alibaba.nacos.naming.push.receiver] [] [com.alibaba.nacos.client.naming]
ERROR: [NA] error while receiving push data
java.net.SocketException: socket closed
at java.net.DualStackPlainDatagramSocketImpl.socketReceiveOrPeekData(Native Method)
at java.net.DualStackPlainDatagramSocketImpl.receive0(Unknown Source)
at java.net.AbstractPlainDatagramSocketImpl.receive(Unknown Source)
at java.net.DatagramSocket.receive(Unknown Source)
at com.alibaba.nacos.client.naming.core.PushReceiver.run(PushReceiver.java:83)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

2021-02-20 11:23:16.442 [main] [] [org.springframework.boot.SpringApplication]
ERROR: Application run failed
org.springframework.context.ApplicationContextException: Failed to start bean 'outputBindingLifecycle'; nested exception is java.lang.IllegalArgumentException: A default binder has been requested, but there is no binder available
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:185)
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53)
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360)
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158)
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:895)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:162)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:554)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:140)
at org.springblade.core.launch.BladeApplication.run(BladeApplication.java:50)
at org.springblade.system.user.UserApplication.main(UserApplication.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)
Caused by: java.lang.IllegalArgumentException: A default binder has been requested, but there is no binder available
at org.springframework.util.Assert.notEmpty(Assert.java:555)
at org.springframework.cloud.stream.binder.DefaultBinderFactory.doGetBinder(DefaultBinderFactory.java:157)
at org.springframework.cloud.stream.binder.DefaultBinderFactory.getBinder(DefaultBinderFactory.java:140)
at org.springframework.cloud.stream.binding.BindingService.getBinder(BindingService.java:379)
at org.springframework.cloud.stream.binding.BindingService.bindProducer(BindingService.java:268)
at org.springframework.cloud.stream.binding.BindingService.bindProducer(BindingService.java:291)
at org.springframework.cloud.stream.binding.AbstractBindableProxyFactory.createAndBindOutputs(AbstractBindableProxyFactory.java:136)
at org.springframework.cloud.stream.binding.OutputBindingLifecycle.doStartWithBindable(OutputBindingLifecycle.java:58)
at java.util.LinkedHashMap$LinkedValues.forEach(Unknown Source)
at org.springframework.cloud.stream.binding.AbstractBindingLifecycle.start(AbstractBindingLifecycle.java:57)
at org.springframework.cloud.stream.binding.OutputBindingLifecycle.start(OutputBindingLifecycle.java:34)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182)
... 22 common frames omitted


五、若有更多详细信息,请在下面提供。

之前是blade-xxljob在eclipse中出现这个错误,并且提了问题:https://sns.bladex.cn/q-4142.html

blade-core-cloud 还需要删除spring-cloud-stream依赖

image.png


在blade-core-cloud中的pom.xml文件中没有找到spring-cloud-stream

<?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">
    <parent>
        <artifactId>BladeX-Tool</artifactId>
        <groupId>org.springblade</groupId>
        <version>2.7.0.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>blade-core-cloud</artifactId>
    <name>${project.artifactId}</name>
    <version>${project.parent.version}</version>
    <packaging>jar</packaging>


    <dependencies>
        <!--Blade-->
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-core-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-starter-auth</artifactId>
        </dependency>
        <!--Spring-->
        <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
        </dependency>
        <!--Feign-->
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-okhttp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--Hystrix-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- Actuator -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- Admin -->
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
        </dependency>
        <!-- Nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!-- Sentinel -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
        <!-- Auto -->
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-core-auto</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

</project>

而是在blade-xxljob-admin中排除,就没问题了

<dependencies>
        <!--Blade-->
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-common</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-core-cloud</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-stream</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

也看到2.7.1.RELEAS解决了,[删除]spring-cloud-stream依赖,按需引入,但目前不太想升级到新版


2条回答
  •  admin
    admin (最佳回答者)
    2021-02-20 15:38

    手动加一下这个类也可以解决

    image.png

    image.png

    作者追问:2021-02-20 15:38

    package org.springblade.core.tool.support;
     
    import java.util.function.Supplier;
     
    /**
     * 解决 no binder available 问题
     *
     * @author Chill
     */
    public class BinderSupplier implements Supplier<Object> {
     
    	@Override
    	public Object get() {
    		return null;
    	}
    }

    sss

    package org.springblade.core.tool.config;
     
     
    import org.springblade.core.tool.support.BinderSupplier;
    import org.springblade.core.tool.utils.SpringUtil;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
     
    import java.util.function.Supplier;
     
    /**
     * 工具配置类
     *
     * @author Chill
     */
    @Configuration
    public class ToolConfiguration {
     
    	/**
    	 * Spring上下文缓存
    	 */
    	@Bean
    	public SpringUtil springUtil() {
    		return new SpringUtil();
    	}
     
    	/**
    	 * Binder支持类
    	 */
    	@Bean
    	@ConditionalOnMissingBean
    	public Supplier<Object> binderSupplier() {
    		return new BinderSupplier();
    	}
     
    }

    搜索查询过之前的问题,在blade-xxljob-adminV2.7.0启动报错Failed to start bean 'outputBindingLifecycle' 问题中就添加了,但未起作用,还是报错。


    作者追问:2021-02-20 15:38

    package org.springblade.core.tool.config;
     
     
    import org.springblade.core.tool.support.BinderSupplier;
    import org.springblade.core.tool.utils.SpringUtil;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
     
    import java.util.function.Supplier;
     
    /**
     * 工具配置类
     *
     * @author Chill
     */
    @Configuration
    public class ToolConfiguration {
     
    	/**
    	 * Spring上下文缓存
    	 */
    	@Bean
    	public SpringUtil springUtil() {
    		return new SpringUtil();
    	}
     
    	/**
    	 * Binder支持类
    	 */
    	@Bean
    	@ConditionalOnMissingBean
    	public Supplier<Object> binderSupplier() {
    		return new BinderSupplier();
    	}
     
    }


    作者追问:2021-02-20 15:38

    package org.springblade.core.tool.config;
     
     
    import org.springblade.core.tool.support.BinderSupplier;
    import org.springblade.core.tool.utils.SpringUtil;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
     
    import java.util.function.Supplier;
     
    /**
     * 工具配置类
     *
     * @author Chill
     */
    @Configuration
    public class ToolConfiguration {
     
    	/**
    	 * Spring上下文缓存
    	 */
    	@Bean
    	public SpringUtil springUtil() {
    		return new SpringUtil();
    	}
     
    	/**
    	 * Binder支持类
    	 */
    	@Bean
    	@ConditionalOnMissingBean
    	public Supplier<Object> binderSupplier() {
    		return new BinderSupplier();
    	}
     
    }


    作者追问:2021-02-20 15:38

    ToolConfiguration.java

    image.png

    回答: 2021-02-20 15:38

    最靠谱的办法就是你下载BladeX-Tool,然后排除掉stream依赖,再本地执行mvn clean install安装依赖就行了。

    0 讨论(1)
  • 2021-02-27 14:15

    把Bladex与Bladex-Tool下的pom.xml排除掉,再本地执行mvn clean install安装依赖就可以了。

    image.png

    0 讨论(0)
提交回复