本文介绍: Java属性变量名都已小写字母开头,如:userName,showMessage等,但也存在着特殊情况,考虑到一些特定的有意思的英文缩略词如(USA,XML等),JavaBean也允许大写字母起头的属性变量名,不过必须满足“中属性也相同,或其中一个包含另一个的全部属性时,可以使用其中一个,而不再依赖另一个项目(前提是你只需要这部分,若还需要使用项目中其他。这两个端口nacos原先的端口上(默认8848),进行一定偏移量自动生成(9848,9849)。的名字(要注意只修改其中一个项目的);

问题记录

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)......
  1. 打开vpn或者切换到同一网络下,
  2. 修改配置文件kafka地址本机地址本机安装kafka

spring boot 启动找不到或无法加载主类问题

  1. maven配置文件是否添加仓库映射(如阿里云),若未添加,则在<mirrors></mirrors>标签中添加:
<mirror>
		<id>aliyunmaven</id>
		<mirrorOf>*</mirrorOf>
		<name>阿里云公共仓库</name>
		<url>https://maven.aliyun.com/repository/public</url>
</mirror>
  1. 添加后重新maven, 然后通过 mvn clean compile 命令项目重新编译 然后通过 mvn install 安装jar包 或者直接通过 mvn clean install 进行编译安装

IDEA 启动项目jdk版本不一致问题

idea maven 构建不起来

  • 分析:
  1. maven构建时 会从远程仓库读取依赖包的信息,来跟本地进行验证, 若本地仓库中存在 xxx.repositoriesxxx.lastUpdated 之类的文件则表示本地jar包是不完整的.所以依赖引入不了,项目构建不起来;
  2. maven中jar下载失败,缺少对应的jar
  • 解决:
  1. 将 Maven 本地仓库里,找同事拷过来的那个依赖目录中,将xxx.repositories文件删掉,再重新构建
  2. 手动下载缺少的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
  1. copy项目能起来的人的maven仓库本机 , 复制maven配置setting文件, 指定仓库地址为copy的这个, idea 引用修改后的setting文件, 重新构建项目

启动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;
}

将要注入的对象设为类级别的变量,并通过在方法使用@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 时乱码问题 :

  • 解决:

    idea设置—>maven—->runer—-> VM Options 添加: -DarchetypeCatalog=internal -Dfile.encoding=GBK

报错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的属性变量名前两个字母大小写问题

  • 一般情况下。Java的属性变量名都已小写字母开头,如:userName,showMessage等,但也存在着特殊情况,考虑到一些特定的有意思的英文缩略词如(USA,XML等),JavaBean也允许大写字母起头的属性变量名,不过必须满足“变量的前两个字母要么全部大写,要么全部小写”的要求,例如:IWorkeTimeServiceIEventClient等;

  • 可以通过在属性上增加 @JsonProperty(value = “sDescRiption”) 注解来解决

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>
<!--不加此依赖 本地服务启动正常 但注册到其他ipnacos报错-->
 <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.serveraddr注册中心的地址
    config.serveraddr ,配置中心的地址

  • 本次错误原因:
    在项目依赖中使用了上述的第二种方式排除自带的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进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注