ClassNotFound 和 NoClassDefFoundError 的区别

在 Java 的开发中,这两个可能是让人比较头痛的异常了,因为出现这个异常,又得一大堆 jar 包冲突需要解决。

ClassNotFound

按照 oracle 官方的描述:Class ClassNotFoundException

Thrown when an application tries to load in a class through its string name using:
The forName method in class Class.
The findSystemClass method in class ClassLoader .
The loadClass method in class ClassLoader.

也就是当 JVM 尝试着去加载某个类的时候,会发现 classPath 下面却没有这个类,那么就会直接报错,在日常开发中出现的常见的常见原因是,两处引用了不同版本的第三方包(maven)。

阅读更多

Springboot的maven间接依赖

在项目中经常使用 maven 来管理项目,但是有时候对于 maven 的细节还是了解的不是很清楚,因此今天复习下。

maven项目

首先开始建立一个最简单的 maven 项目,其配置如下图:

可以看到最上面一行是 xml 的文件描述符,然后再是 project,在这里引入 xsd 文件。

XSD(XML Schemas Definition)XML Schema,描述了 xml 文档的结构,用于判断其是否符合 xml 的格式要求

阅读更多

maven和json以及spring的一些问题

maven和IDEA的一个问题

在 IDEA 中可以正常使用maven的一些命令来进行 clean 和 complime ,但是在使用IDEA的build功能时一直提示某些包找不到,解决办法:
执行 mvn clean 命令清除缓存,然后删除 .idea 这个文件夹中的文件

如果还是解决不了则可以直接换一个 maven ,最好的解决办法则是每一个项目,一个 maven。

阿里的Json包和对象之间的转换

今天有一个新的需求是将一个 Json 字符串转换成一个Json对象,此时可以调用
JSON.parseObject( new TypeReference(XXX),json串)来讲一个 Json 字符串转为一个对象

阅读更多

maven下载快照的问题

今天在使用maven下载一个快照文件的时候,只在 settings.xml 文件中配置了镜像源,并没有配置 release 版本和 snapshoot 版本,所以就导致了在下载快照文件的时候一直出现问题:
Missing artifact 大意就是说找不到这个jar的pom文件啥的,然后看了下本地的仓库,也并没有看到下载的文件夹。

解决办法:

pom.xml 中设置快照的下载地址,配置如下:

1
2
3
4
5
6
7
8
9
10
<repositories>
<repository>
<id>仓库的ID</id>
<!-- <name>Spring Milestones</name> --> 如果没有可以忽略
<url>https://repo.spring.io/libs-milestone</url> 快照仓库的URL
<snapshots>
<enabled>true</enabled> 打开镜像
</snapshots>
</repository>
</repositories>

最后解决了,如果为了方便,其实可以在 settings.xml 中直接配置,以减少后期多个pom.xml配置的麻烦

阅读更多