一、该问题的重现步骤是什么?
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依赖
在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依赖,按需引入,但目前不太想升级到新版
-
手动加一下这个类也可以解决


作者追问: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.support; import java.util.function.Supplier; /** * 解决 no binder available 问题 * * @author Chill */ public class BinderSupplier implements Supplier<Object> { @Override public Object get() { return null; } }
搜索查询过之前的问题,在blade-xxljob-adminV2.7.0启动报错Failed to start bean 'outputBindingLifecycle' 问题中就添加了,但未起作用,还是报错。
作者追问: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; } }
作者追问: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; } }
作者追问:2021-02-20 15:38
ToolConfiguration.java

回答:
2021-02-20 15:38
最靠谱的办法就是你下载BladeX-Tool,然后排除掉stream依赖,再本地执行mvn clean install安装依赖就行了。
讨论(1)
-
把Bladex与Bladex-Tool下的pom.xml排除掉,再本地执行mvn clean install安装依赖就可以了。

讨论(0)