• 解决过的Java相关问题


    文章目录

    1、pull

    pull代码的时候,建议 git pull --rebase,这样比merger看起来更清晰。遇到冲突,手动解决,然后git add 、git rebase --continue

    git pull --rebase解决冲突的方式

    • 执行完$git pull --rebase 之后,本地如果产生冲突,手动解决冲突之后
    • 用"git add"命令去更新这些内容的索引(index),然后只要执行:
    • $ git rebase --continue 就可以线性的连接本地分支与远程分支,无误之后就回退出,回到主分支上。

    2、debug的时候显示/Users/junit.properties (No such file or directory)

    那是因为在 open处:人为的加了一个打点。把打点取消!!

    3、pom中build标签中plugins标签作用

    <build>
            <plugins>
               //含有applicationLoader启动类的模块使用此插件
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                //其它模块中使用此插件
     						 <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    maven-source-plugin提供项目自动将源码打包并发布的功能(注意:在多项目构建中,将source-plugin置于顶层或parent的pom中并不会发挥作用,必须置于具体项目的pom中。除了server模块外,每个模块中都需要引入)
    
    spring-boot-maven-plugin 是需要启动主类的
    
    maven-compiler-plugin:maven的默认编译使用的jdk版本貌似很低,使用maven-compiler-plugin插件可以指定项目源码的jdk版本,编译后的jdk版本,以及编码。一般指定java8
    
    https://blog.csdn.net/yangchao1125/article/details/100585116?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EsearchFromBaidu%7Edefault-9.searchformbaiduhighlight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EsearchFromBaidu%7Edefault-9.searchformbaiduhighlight
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4、NoClassDefFoundError

    1.原因:
    
    是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。(NoClassDefFoundError发生在JVM在动态运行时,根据你提供的类名,在classpath中找到对应的类进行加载,但当它找不到这个类时)
    
    2.解决
    
    原因是:class path resource [com/sankuai/groceryscp/returnplan/api/service/ReturnPlanOrderManageTService.class] cannot be opened because it does not exist
    
    暂未解决:明天继续排查
    
    3.其它
    
    NotClassFoundException在类加载中,类加载器在当前classpath目录中没有找到这个字节码文件,而发生的异常
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    5、java中包A中无法导入包B中的类

    file -》invalidate cache。clear fire system cache 。然后重启idea

    6、command not found: mvn

    Man -JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
    
    MAVEN_HOME=/Users/xxx/Downloads/apache-maven-3.6.2
    
    PATH=$PATH:$MAVEN_HOME/bin:$JAVA_HOME/bin:
    
    export PATH=$PATH:$MAVEN_HOME/bin
    
    export MAVEN_HOME
    
    export JAVA_HOME
    
    export PATH
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    7、java: package xxx.common.utils does not exist

    对应的common模块clean下,然后install下

    8、spring注解

    redundant declaration @springbootapplication already applies given @componentscan

    RepositoryImpl实现类,需要加@Repository注解

    Gateway的实现类,用@Component注解

    service的实类,用@Service注解

    9、Idea本地缓存的代码

    pull -rebase为了解决冲突,进行了merge。absort merge了,本地未commit的代码没有了

    解决:

    idea中,左小脚的git中-Shelf保存着未commit的本地代码的版本和时间

    10、保存本地没有commit的代码的步骤

    https://www.cnblogs.com/gaohanghang/p/13900096.html

    存(shelve 的意思是“将…搁在一边)

    先左下角 git -> local change -> shelve changes 给出注释

    取(Unshelve)

    先左下角 git ->shelf -> 选择文件 UnShelve 给出注释

    11、like模糊查询

    criteria.andSkuNameLike(skuName+“%”);

    12、Data truncation: Data too long for column ‘sku_category’ at row 4

    insert的时候,字段值太长了,超过数据库定义的varchar(256)或512

    在 5.1 版本后, varchar(100) 就是指 100 个字符。
    MySQL中char,varchar与text类型的选用:
    知道固定长度的用char,比如MD5串固定是32位.
    经常变化的字段用varchar.
    超过255字符的只能用varchar或者text,不能用char.
    能用varchar的地方不用text.
      
      而blob和text类型只占用9到12个字节,它们的内容分散到不同行上去了。
      string一般存储短字符串,它的长度可以理解为字符长度,一般最好不要超过255个。
      如果长度大于255 最好考虑text 或者blob
      
     2.varchar(20)与varchar(255)都是可变的字符串
    
    通常情况下使用varchar(20)和varchar(255)保存较短的字符串’hello world’时,占用的空间都是一样的,但使用长度较短的列却有巨大的优势。较大的列使用更多的内存,MySQL通常会分配固定大小的内存块来保存值,这对排序或使用基于内存的临时表尤其不好。同样,也会发生在使用文件排序或者基于磁盘的临时表时。
    
    (当使用ROW_FORMAT=FIXED创建MyISAM表时,会为每行使用固定的长度空间,这样设置不同的varchar长度值时,存储相同数据所占用的空间是不一样)
    3.字符串较长
    当20<字符长度<255,varchar(20)会报错,varchar(255)会正常插入.
    4.字符串特别长
    字符长度>255,可以选择更大的值,VARCHAR(M)定义的列长度为可变长字符串,M取值可以为0~65535(64K)之间,(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    13、Mysql 为什么默认定义varchar(255) 而不是varchar(256)

    当定义varchar长度小于等于255时,长度标识位需要一个字节;
    当大于255时,长度标识位需要两个字节
    
    当我们定义一个varchar(255)的字段时,其实它真实使用的空间是256(255+1)字节;(注意,字段非空,latin1编码)
    当我们定义一个一个varchar(256)字段时,它真实使用的空间是258(256+2)字节
    https://www.jianshu.com/p/83bdcf9bd5a8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    14、sonar对于处理InterruptedException异常提示的原因分析

    https://www.codenong.com/cs106837995/

    } catch (InterruptedException e) {
                  
                    //再次更新中断标志位为true
                    Thread.currentThread().interrupt();
                 
                }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    15、本地提交了commit,也push了。但是远程代码仓库没有改变

    Git -> Local change下面有代码没有提交。这些代码,本地已经发送改变,但是要手动执行

    Commit File。否则会导致,本地有代码,但是远程没有

    16、联合索引。最多16列

    17、Library source does not match the bytecode for class x

    源码文件(xxx-sources.jar)和字节码文件(xxxx.jar)不匹配

    解决:找到对应的类再pom中的依赖,删除-刷新,再恢复-刷新

    由于使用lombok插件会造成编写的Java文件和编译后的class上有差别,所以IDEA打开时看到的是Maven打包时用的源码,而IDEA会自动匹配与.class反编译后的源代码,造成不匹配的提示。

    18、The bean ‘xxxServiceImpl’ could not be injected as a ‘[xxx.service.impl.XxxServiceImpl’ because it is a JDK dynamic proxy that implements:

    解决:@resource,最好是接口,不要是impl类

    19、正式版本的包只能deploy一次

    snapshot的,可以多次deploy

    20、异常错误-Table configuration with catalog null, schema null, and table “表”did not resolve to any

    解决:

    当前连接的数据库中不存在x x x表的存在。大概率是jdbcConnection内容指定错了

       一般是db不一致 
        
        
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    21、db中某一行数据,某个字段有值。但是查询出来的DO/PO,这条数据的这个字段值为NULL

    原因:大概率是xml文件的问题(是否在最上端定义了JDBC这个字段)

    22、索引失效group by

    不要轻易用group by排序

    否则很有可能造成索引不生效

    23、pom包1.6.9maven更新后,还是红色。

    可能是缓存还没更新,可以选择file -》 reload

    24、No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

    问题描述:执行mvn -v 出现runtime:这种错误形式【runtime:/Library/Internet/Plug-】

    解决:

    一、原本的文件,不变

    open -e .bash_profile

    Man -JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
    
    MAVEN_HOME=/Users/xxx/Downloads/apache-maven-3.6.2
    
    PATH=$PATH:$MAVEN_HOME/bin:$JAVA_HOME/bin:
    
    export PATH=$PATH:$MAVEN_HOME/bin
    
    export MAVEN_HOME
    
    export JAVA_HOME
    
    export PATH
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    二、删除runtime后面错误的文件

    进入 /Library/Internet Plug-Ins/ 目录

    删除 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin【sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin】

    检查一下,再执行mvn -v 【runtime后面是jdk了,ok】

    25、Dependecy not found

    -刷新:reload all maven project

    -右键maven:reload project

    -file -》invalid cache:clear

    -将pom中依赖,添加到别的项目中,maven刷新一下。

    A服务中刷新不出来,那就上B服务中刷新下试试

  • 相关阅读:
    vue3的双向绑定 v-model实现原理和案例
    发生OOM时JVM会退出吗
    vue+element纯手工完美模拟实现小米有品网站
    银行主动安全纵深防御体系解决方案
    Loki+Grafana查询语句
    有哪些国产的SSL品牌?国产的SSL值得信任吗?
    OpenCV从2到3的过渡
    软考高级信息系统项目管理师系列之:信息系统项目管理师论文评分参考标准
    Ingress:比Service更强大的服务暴露与负载均衡
    cephadm部署ceph集群
  • 原文地址:https://blog.csdn.net/tmax52HZ/article/details/133240278