解决过的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>
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

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目录中没有找到这个字节码文件,而发生的异常

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

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字节) 

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

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

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

} catch (InterruptedException e) {
              
                //再次更新中断标志位为true
                Thread.currentThread().interrupt();
             
            }

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不一致 
    
    
    

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

二、删除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服务中刷新下试试

你可能感兴趣的:(java,Java问题)