近期在开发一个maven项目的时候,遇到了这样的报错:
java.lang.NoClassDefFoundError: com/google/common/base/MoreObjects
NoClassDefFoundError解决的三种办法(参考:https://my.oschina.net/jasonultimate/blog/166932):
1.首先是类在运行的时候依赖于其它的一个jar包,但是该jar包没有加载到classpath中或者是该jar包的名字被其他人改了,就像我的一个例子tibo.jar改为了tibco_v3.jar…….
2.运行的类不在classpath中,这个问题没有一个确定的方法去知道,但是很多时候你可以通过System.getproperty(”java.classpath“)方法,该方法能让你至少可以领略到实际存在的运行期间的classpath。
3.试着通过-classpath命令明确指出你认为正确的classpath,如果能够正常执行的话就说明你使用的classpath是正确的,而系统中的classpath已经被修该过了
这里只详细讲第一种情况。
遇到NoClassDefFoundError报错后,查看项目中是否有MoreObjects这个类,如果没有,pom文件中加入缺少的依赖。如果有,进入该类,查看它所在的jar包是否存在冲突(比如不同版本的同种jar包),发现冲突后,进入对应的pom文件,然后如图
显示依赖关系
根据这个依赖关系,可以找出jar包被谁依赖,逐步解决冲突。
我的项目中需要依赖guava19.0但是之前的许多相关联的项目中都间接依赖了guava14.0,如果14依赖的少,可以逐个exclude,但是依赖过多就不行了。
可以在根pom中写明,这样就会优先选择你指定的版本了
<dependencyManagement> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>3.0.0</version> </dependency> </dependencies> </dependencyManagement>
祝好运。
相关推荐
标题"JSONObject相关jar包和maven管理jar包"暗示了我们讨论的主题集中在JSONObject类库的使用上,特别是如何在Java项目中通过jar包和Maven构建工具来管理和利用这个类库。JSONObject是Java编程语言中用于处理JSON...
在Java开发中,Maven是一个广泛使用的构建工具,它依赖于中央仓库中的各种jar包来构建项目。然而,有时候我们可能需要使用一些不在中央仓库中的第三方库,这就需要我们将这些jar包手动导入到Maven的本地库。"maven...
- 使用旧版本的`maven-jetty-plugin`可能会导致某些新特性无法使用或与其他库冲突,因此保持插件更新是很重要的。 6. 结论: `maven-jetty-plugin`简化了Java Web应用的开发和测试过程,通过Maven的命令行即可...
- **排除冲突的jar**:根据冲突报告,可以从项目中移除不必要的jar包,或者使用Maven或Gradle的exclusions来排除冲突的依赖。 - **使用类加载器策略**:例如,使用自定义类加载器来控制类的加载顺序,避免冲突。 - *...
4. **版本一致性**:确保导入的jar包版本与项目需求一致,避免出现版本冲突的问题。 5. **重复导入**:如果同一个jar包已经存在本地仓库中,再次执行导入操作时,Maven不会重复导入,而是直接使用已存在的版本。 ##...
在Java开发过程中,"jar包冲突"是一个常见的问题,它主要出现在项目中引用了多个库,而这些库可能包含了相同类的不同版本。这种情况可能导致运行时错误或者程序行为不一致,因为JVM在加载类时可能会遇到混淆。"检测...
手动将jar包解压到特定目录可能会导致版本冲突或管理混乱。正确的方式是通过`pom.xml`文件中的依赖配置,让Maven自动处理。 关于标签"Kafka",Kafka是一个高性能、可扩展的开源消息系统,它支持发布订阅模型和生产...
setting处理了,也将jar包的版本号都试了一遍,还是没解决,后来请教大牛,原来是没连网,maven工程加载了一部分jar包,连网之后自动下载的jar包跟之前的冲突,用这个脚本放在Maven仓库的目录,直接打开,可以将之前...
OSGi(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许在单个JVM上运行多个版本的相同库或服务,从而解决了不同版本jar包冲突的问题。本示例通过一个名为“myself”的工程,展示了如何...
- **使用 shade plugin**:Maven的Shade Plugin可以重打包`jar`,合并并解决冲突,也可以使用`relocation`策略将冲突的包名改变。 - **类加载器策略**:某些应用服务器允许配置类加载器策略,例如优先加载某个`jar...
标题和描述提到了在非Maven项目中集成MinIO时可能会遇到的jar包冲突问题。 以下是你提供的压缩包中的jar文件及其在MinIO集成中的作用: 1. **guava-28.1-jre.jar**:Google的Guava库提供了一系列实用工具类,如...
电脑暂时没有装maven,最近突发奇想,向在搭建一个spring boot非maven项目,折腾了两个小时,下载jar包冲突问题居多,最后结合网上博客,整理了一份spring boot所需的jar包,亲测没有问题
对于团队开发而言,这种工具可以确保所有开发者使用同一版本的jar包,避免了版本冲突的问题。 了解了基本的安装流程后,我们深入探讨一下Maven仓库的结构。Maven仓库分为本地仓库和远程仓库。本地仓库是Maven默认的...
2. **排除冲突**:在Maven的pom.xml或Gradle的build.gradle文件中,使用`exclusions`或`exclude`规则,明确排除导致冲突的jar包。 3. **版本统一**:尽量让所有框架使用相同版本的公共库,避免版本差异带来的问题。...
标题"weblogic部署项目jar冲突解决"指出的核心问题是JAR包冲突。这是因为不同的应用服务器可能内置了不同版本的库,或者在类加载机制上有差异,导致原本在Tomcat上运行良好的应用在WebLogic上出现问题。以下是一些...
**淘宝Diamond Maven Jar包详解** 淘宝Diamond是一款由阿里巴巴开源的分布式配置中心,它主要用于解决大规模分布式系统中的配置管理问题。在大型互联网企业中,随着系统的复杂度增加,配置的管理和更新变得越来越...
Maven的本地仓库是Maven系统的核心组件之一,它存储着项目所需的各类依赖库,包括JAR包。当你在开发过程中引用了一个库,Maven会尝试从中央仓库下载该库到本地仓库,以便后续的编译和构建步骤能够访问到。 本地仓库...
POM 还定义了项目依赖关系,Maven 会根据这些依赖关系自动下载所需的 JAR 包,并管理它们之间的版本冲突。 **依赖管理** 在 Maven 中,项目依赖是通过 POM 文件中的 `<dependencies>` 标签来声明的。每个依赖都由...