问题记录
kefka-eagle-web UI页面显示问题
127.0.0.1 localhost
kafka本机启动没问题 项目启动出现问题
- 问题描述:
13:43:38.446 [main] ERROR o.s.k.c.KafkaAdmin - [initialize,177] - Could not configure topics org.springframework.kafka.KafkaException: Timed out waiting to get existing topics; nested exception is java.util.concurrent.TimeoutException at org.springframework.kafka.core.KafkaAdmin.lambda$checkPartitions$2(KafkaAdmin.java:238) at java.util.HashMap.forEach(HashMap.java:1288)......
spring boot 启动找不到或无法加载主类问题
<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
IDEA 启动项目jdk版本不一致问题
idea maven 构建不起来
- 分析:
- maven构建时 会从远程仓库读取依赖包的信息,来跟本地进行验证, 若本地仓库中存在 xxx.repositories 或 xxx.lastUpdated 之类的文件则表示本地jar包是不完整的.所以依赖引入不了,项目构建不起来;
- maven中jar包下载失败,缺少对应的jar包
- 解决:
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.1.0 -Dpackaging=jar -Dfile=C:UserslymDesktopworkojdbc14-10.2.0.1.0.ja
启动Kafka报错:ERROR Shutdown broker because all log dirs in…
问题: websocket使用@Autowired、@Value获取值为null
- 示例:
@Component @ServerEndpoint(value = "/webSocket") @Slf4j public class WebSocketServer { @Value("${url}") private String url; }
原因分析
@ServerEndpoint
表示这是一个websocket 服务端类,根本原因在于:spring 管理的都是单例(singleton)和 websocket (多对象)相冲突。websocket多用于客户端与服务端快速通信:聊天、实时输出日志等场景,这意味着**每一个客户端请求服务端都会生成一个新的websocket实例,**spring 仅仅针对@component、@controller注解完成单例模式管理任务(注意仅仅这一次、这一个对象赋值了)后续随着客户单端访问 websocket不断进行实例化(这些对象不是由spring管理的,所以启动过程无法给后续的实际处理websocket会话的实例赋值)。不改变方法的话每个 websocket 对象的 注入对象值都是 null。
解决方式:
将要注入的对象设为类级别的变量,并通过在方法上使用
@Autowired
、@Value
对变量进行初始化,进而使变量不为空:@Component @ServerEndpoint(value = "/webSocket") @Slf4j public class WebSocketServer { //static为关键 private static String url; @Value("${url}") public void setScadaUrl(String scadaUrl) { this.url= url; } }
问题: Timer定时器中使用@Autowired,@Resource 注入service为null
- 解决: 手动注入,通过获取上下文对象,然后再对这个对象进行解析,然后取出自己所要的那个对像。
如下工具类:
@Component public class SpringContextUtil implements ApplicationContextAware { /** * Spring应用上下文环境 */ private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringContextUtil.applicationContext = applicationContext; } /** * @return ApplicationContext */ public static ApplicationContext getApplicationContext() { return applicationContext; } /** * 获取对象 * * @param beanName * @return Object 一个以所给名字注册的bean的实例 */ public static Object getBean(String beanName){ return applicationContext.getBean(beanName); } /** * 获取类型为requiredType的对象 * * @param clz * @return * @throws BeansException */ public static <T> T getBean(Class<T> clz) throws BeansException { @SuppressWarnings("unchecked") T result = (T) applicationContext.getBean(clz); return result; } /** * @param name * @return Class 注册对象的类型 * @throws NoSuchBeanDefinitionException */ public static Class<?> getType(String name) throws NoSuchBeanDefinitionException { return applicationContext.getType(name); } /** * 如果给定的bean名字在bean定义中有别名,则返回这些别名 * * @param name * @return * @throws NoSuchBeanDefinitionException */ public static String[] getAliases(String name) throws NoSuchBeanDefinitionException { return applicationContext.getAliases(name); } }
maven install 时乱码问题 :
报错:org.apache.ibatis.exceptions.PersistenceException
msg: "nested exception is org.apache.ibatis.exceptions.PersistenceException: rn### Error querying database. Cause: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'uUserLogMapper' availablern### Cause: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'uUserLogMapper' available"
- 原因:
mapper.xml
文件中 字符串字段 做不等于判断时 未对值加引号
- 修改:
将上图中 and t.operate_type != 6 修改为 and t.operate_type != ‘6’ 即可
mapper.xml 文件名不能用两个大写字母开头 否侧会报找不到bean异常
feign 踩坑
JavaBean的属性变量名前两个字母大小写问题
BladeX框架中集成 websocket 异常
- 错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverEndpointExporter' defined in class path resource [com/lym/bladewebsocket/config/WebSocketServiceConfig.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available
<dependency> <groupId>org.springblade</groupId> <artifactId>blade-core-launch</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </exclusion> <!--核心是这个 去除框架自带的starter-undertow --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </exclusion> </exclusions> </dependency>
或者用下面这个方式:
<!--Blade boot--> <dependency> <groupId>org.springblade</groupId> <artifactId>blade-core-boot</artifactId> <exclusions> <!--去除框架自带的starter-undertow--> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </exclusion> </exclusions> </dependency> <!--不加此依赖 本地服务启动正常 但注册到其他ip的nacos会报错--> <dependency> <groupId>org.springblade</groupId> <artifactId>blade-core-common</artifactId> <!--nacos地址的配置 在这个包中--> <exclusions> <exclusion> <groupId>org.springblade</groupId> <artifactId>blade-core-launch</artifactId> </exclusion> </exclusions> </dependency>
在bladex中使用websocket后nacos配置出错,Server check fail, please check server 127.0.0.1 ,port 9848 is available , error ={}
- 分析:
当
nacos
客户端升级为2.x版本后,新增了gRPC
的通信方式,新增了两个端口。这两个端口在nacos原先的端口上(默认8848),进行一定偏移量自动生成(9848,9849)。
可以尝试以下方式修复:
1)关闭防火墙;
2) docker 启动的时候加上这句,“-p 8848:8848 -p 9848:9848 -p 9849:9849 –privileged=true”
3) nocas 本地服务想注册到服务器上的时候,需要加一个配置
discovery.server–addr ; 注册中心的地址
config.server–addr ,配置中心的地址本次错误原因:
在项目依赖中使用了上述的第二种方式排除自带的undertow
容器,但是并没有加上面《blade-core-common》
的依赖,导致每次项目启动时都默认去寻找本地的nacos
服务地址。 但是代码中配置的nacos(是配在blade-core-common
包中的)注册地址在另一台机器(ip不是本机)所以出错。注意:
因为《blade-core-boot》依赖中已经依赖过《blade-core-launch》包了 所以在依赖《blade-core-common》包时需要排除《blade-core-common》中依赖的《blade-core-launch》包避免造成重复依赖。
springboot中的logback-spring.xml与application.properties加载顺序
A项目与B项目中有相同类名的class,当在C项目中同时引入A,B项目时,会报冲突错误
- 原因
springboot加载bean时,默认会将类名首字母小写后作为bean的名字,当
className1
已经映射到A项目中的ClassName
类时,再去依赖B项目的ClassName
就会冲突,报错:The alias 'TaskMatchResult' is already mapped to the value 'org.springblade.industrytask.entity.Task
解决
方式一:Idea重命名,修改其中一个
class
的名字(要注意只修改其中一个项目的);方式二:若需要依赖项目但不需要这些相同类名的
class
,则可以在pom
文件引入依赖时使用下面方式进行排除;<exclusions> <exclusion> <groupId>冲突的包名1</groupId> <artifactId>冲突的包名1</artifactId> </exclusion> <exclusion> <groupId>冲突的包名2</groupId> <artifactId>冲突的包名2</artifactId> </exclusion> <!-- 添加更多的 <exclusion> 子标签来排除其他冲突的类或包 --> </exclusions>
方式三:若相同名字的
class
中属性也相同,或其中一个包含另一个的全部属性时,可以使用其中一个,而不再依赖另一个项目(前提是你只需要这部分,若还需要使用项目中其他class
则该方法不可用)。
java中匹配字符串中的Html标签,并去除标签
public String removeHtmlTags(String html) { return html.replaceAll("<[^>]*>", "###"); //将匹配到的标签替换为指定字符 }
使用 HTML解析库处理,如Jsoup;
添加依赖
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.14.3</version> <!-- 请根据你的实际需要选择版本 --> </dependency>
去除标签:
public String removeHtmlTagsUsingJsoup(String html) { return Jsoup.clean(html, Whitelist.none()); //删除所有的HTML标签,只保留纯文本, Whitelist.none() 表示白名单中的不做处理 }
SQL 使用Count函数统计数据,结果集使用map接收,返在map.get(“key”)时报错:java.math.BigDecimal cannot be cast to java.lang.xxx
原文地址:https://blog.csdn.net/weixin_44603464/article/details/134568351
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_1941.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!