首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Google Guava时,打包的JAR的主类抛出错误

Google Guava是一个开源的Java库,提供了许多实用的工具类和函数,用于简化Java开发过程中的常见任务。它包含了很多模块,如集合、缓存、并发、函数式编程、字符串处理等,可以帮助开发人员提高代码的可读性、可维护性和性能。

在使用Google Guava时,如果打包的JAR的主类抛出错误,可能是由于以下原因导致的:

  1. 缺少依赖:Google Guava是一个第三方库,需要在项目中添加相应的依赖才能使用。如果没有正确添加依赖,编译和运行时就会出现错误。可以通过在项目的构建文件(如Maven的pom.xml或Gradle的build.gradle)中添加正确的依赖来解决该问题。具体的依赖配置可以参考Google Guava的官方文档或相关教程。
  2. 版本冲突:如果项目中同时使用了其他依赖库,并且这些库与Google Guava的版本存在冲突,就可能导致打包的JAR的主类抛出错误。解决该问题的方法是通过调整依赖库的版本或使用依赖管理工具(如Maven或Gradle)来解决版本冲突。
  3. 编译错误:在使用Google Guava时,如果代码中存在语法错误或逻辑错误,就会导致编译错误。编译错误可能会导致打包的JAR的主类抛出错误。解决该问题的方法是仔细检查代码,修复错误,并重新编译项目。

总结起来,当使用Google Guava时,如果打包的JAR的主类抛出错误,需要检查是否正确添加了依赖、是否存在版本冲突以及是否存在编译错误。根据具体情况进行排查和解决。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Google guava工具介绍和使用

高效设计良好API,被Google开发者设计,实现和使用 遵循高效java语法实践 使代码更刻度,简洁,简单 节约时间,资源,提高生产力 Guava工程包含了若干被Google Java项目广泛依赖...使用 引入maven依赖(就是引入jar包) (从版本号就能看出 guava是一步步改进,并且跟随jdk不断提取其中优秀部分) 1 2...方法中==操作集合方法都声明过期==,并且抛出异常。 没用guava之前是需要声明并且加各种包裹集合才能实现这个功能。...NullPointerException(); } return reference; } 方法声明(不包括额外参数) 描述 检查失败抛出异常...---- 以上只是guava使用一小部分,guava是个大工具,第一版guava是2010年发布,每一版更新和迭代都是一种创新。 jdk升级很多都是借鉴guava里面的思想来进行

1.6K10

版本不兼容Jar包冲突该如何是好?

在最近项目里,我们需要使用Guava高版本Jar包,但是发现中间件依赖是低版本且与高版本不兼容Jar包,面对这种两难,我们肯定是“老婆”和“妈妈”都要救,于是我们开始寻求解决方案。...和Pandora一样,SOFAArk也是通过使用不同 ClassLoader 加载不同版本三方依赖,进而隔离,彻底解决包冲突问题,这就要求我们需要将相关依赖打包成Ark Plugin(参见SOFAArk...三、maven-shade-plugin解决依赖冲突 最后如何来配置和使用maven-shade-plugin将Guava映射成我们自己定制Jar包,实现与中间件Guava隔离。...- Maven仓库配置,略 -> 项目引入这个新打包guava-wrapper后,import选择从这个包导入我们需要相关即可...>27.1-jre 四、结语 为了在同一个项目中使用多个版本不兼容Jar包,我们首先想到手动自行维护代码,但是工作量和维护成本很高,接着我们想到通过加载器隔离

2.1K30

使用java命令运行class文件提示“错误:找不到或无法加载问题分析

“.”意思是搜索当前目录 第二个问题看下面分析: 看下面两个 ?        A   ?  B A和B唯一差别就是没有定义包名。...我们工程路径是D:\HelloWorld,在HelloWorld文件夹中建立一个src文件夹,B源代码文件就放在src中。...现在我们再把源代码换成A ? 为什么加入了package后就不对了呢? A中package路径是org.will.app.main。...按照java规定,我们应该按照package定义路径来存放源文件,A应该放入: src\org\will\app\main下,如下: ? 然后我们编译执行: ?...依然有问题,为什么,其实大家再回去看看java书籍就会发现,一个全名应该是包名+名。A全名:org.will.app.main.NewsManager 好,再试试: ? 还是不对。

5.6K30

Android开发 - 处理 null 和 预防空指针异常(NullPointerException) 一些经验

取代在使用该参数进行检查,这样能更早发现问题。或者在 一个普通方法中,一个 参数必须不能为null ,那么我们在这个方法第一行就做出判断,如果参数为null,抛出空指针异常。...9.我们引用Guava来帮忙检查 null 情况,我们使用 checkNotNull 方法来替代写 if( obj == null) throw new NullPointExcetion(); ,...是什么: Guava工程包含了若干被Google Java项目广泛依赖 核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support...Guava工具对Null值都采用快速失败操作 添加项目引用 dependencies { compile fileTree(dir: 'libs', include: ['*.jar'])...compile "com.google.guava:guava:18.0" } 参考: http://ifeve.com/google-guava/

2.2K00

绕过谷歌禁止反射一种办法

Androi P之后Google可能会禁止使用反射来获取隐藏方法调用,虽然在preview版本中只会以log形式提示,但后续版本可能会在使用反射直接抛出错误。...· 没有打包进android.jar和方法,这部分不是隐藏 · 打包进android.jar隐藏和方法 如果查看源码,会发现有很多代码其实没有打进android.jar,比如internal...这部分类之所以不打进android.jar,目的是这些是只给android内部使用,不希望开发者使用。 今天只说明对于没有打包进 android.jar,在不用反射情况下使用方法。...用provided方式提供丢失 在gradle项目里,可以用provided方式引入 java library,这样引入library不会被打包进最终apk里。...总结 对于Android里没有被打进 android.jar包中,可以通过 provided library方式提供调用, 虽然P禁用了反射,但是直接调用是可以

1.2K10

好机会,我要帮女同事解决Maven冲突问题

妹子遇到Jar 包冲突问题,错误信息是 Caused by: java.lang.ClassNotFoundException,看错误要么就是缺少某个 Jar 包,要么就是冲突了。...如果刚好用到了高版本不兼容低版本方法和,就会出现选择错误,因为 Maven 会根据依赖树深浅来选型浅依赖,也就是 15.0。 ?...错误信息可以看到 com.google.common.collect.FluentIterable.concat 这个方法找不到,目前是从 guava-18.0.jar 中加载,这种问题我们改怎么解决呢...:file:/Users/yinjihuan/.m2/repository/com/google/guava/guava/18.0/guava-18.0.jar!...解决思路之察言观色 其实很明显,错误信息已经告诉我们 18.0 中找不到 concat 方法,所以 18.0 肯定是不能用,通过前面的分析,找到了直接依赖 guava.18.0.jar 是 smjdbctemplate

59520

Java9来了,快来了解下JPMS基础吧!

该文件是从源代码库中module-info.java文件创建使用模块化jar文件涉及将jar文件添加到模块路径(modulepath )而不是路径(classpath)。...org.joda.convert取决于(requires)com.google.guava,但是在编译只需要“requires static”,而不是简单“requires”。...这是一个可选依赖关系。如果Guava在模块路径上,则Joda-Convert将能够看到并使用它,如果不存在Guava,则不会发生错误。如虚线显示。 ?...访问规则 当在使用了JVM访问规则模块路径上运行模块化jar,如果有下列条件,那么程序包A中代码可以看到包B中类型: • 类型为 public; • 包B被其模块导出(exports); •...为了兼容性,路径中所有代码都打包成一个特殊未命名模块,没有隐藏包和对整个JDK完全访问。因此,隐藏软件包安全优势至关重要。然而,JDK本身模块总是以模块化模式运行。 模块版本不被处理。

2.7K80

H5+APP在设备升级android10后不能启动了

同样代码在原来版本HX中可以直接真机调试运行在Android10设备上,可正常启动未发现其他异常。由于我是离线打包,所以断定打包过程一些api无法用了。...但是官方基座可以在老版本HX上直接运行在Android10上,推测基座版本和HX关系不大,应该是最新。 所以我们APP要重新打包发布了。...com.github.bumptech.glide:glide:4.9.0' implementation 'com.alibaba:fastjson:1.1.46.android' -> build,出现各种莫名其妙错误...; 1、Error:Could not download guava.jar (com.google.guava:guava:19.0): No cached version available...2、XXXX.aar 文件无法找到、无法链接之类 删除不需要.aar文件 其他错误层出不穷,出现有一个修改一个。。。 最后不在报错!最后打包导出apk!

88130

在Java里面如何解决进退两难jar包冲突问题?

导致异常原因简单说下: spark环境首先启动,导致jvm里面已经加载了guava14.0,这个时候jvm不会加载es依赖guava18.0,而当es初始化时候,恰巧需要使用guava18.0新版本...,那么相当于把所有guava这个改名后组件和es依赖在编译后class文件层进行绑定,将其两者变成一个整体依赖jar,并且这个组件也会自动修改es里面所有导入guava旧路径为改动后新路径,看如下从反编译后...jar中,拷贝出来文件信息: 改动后guavaMoreExecutors这个文件头部,变成了我们修改后包名: package my.elasticsearch.common.util.concurrent...里面的es就只对这个版本guava进行了绑定依赖,这个时候在spark项目中,引入这个esuber-shade-jar,就不会发生冲突,通过使用不同包名完美解决了冲突问题,这两个都可以被同一个...JVM虚拟机加载,这样以来,spark仍旧可以使用guava14.0版本,而我们es也可以完美的使用改名后guava18.0版本,从而比较优雅解决了这种不可避免多版本冲突问题。

3.1K40

如何利用Guava实现方法调用超时自动中断

其实也不难,在方法调用前后加入加入计时功能,如果超过阈值,应主动终止线程,抛出异常代码,当然,为了不影响服务运行,这段代码,应该独立运行在一个子线程中,而不是耦合在主线程中。...思路大致如此,当然为了不重复造轮子,建议使用Google开源Guava工具包,里面提供了许多有用功能,包括这次介绍超时方法自动终止功能,还有一些限制网络流量,或者限制在规定时间内访问次数功能,...即抛出异常 重点介绍下SimpleTimeLimiter使用,这个里面主要有2个方法: (1)newProxy 通过JDK动态代理配合callWithTimeout实现超时拦截 (2)callWithTimeout...通过maven引入最新guava包: Java代码 com.google.guava...B:基于回调用法,比较简单,因为不需要使用代理模式 ? 总结: 两种方式都能实现方法调用超时中断,代理方式适合用于级别的方法超时中断,而基于回调方式 ,则比较适合任意单个方法使用

2.8K70

Maven Jar包冲突?看看高手是怎么解决

即当一个依赖需要另外一个依赖支撑,Maven会帮我们把相应依赖依次添加到项目当中。 这样好处是,使用起来就非常方便,不用自己挨个去找依赖Jar包了。坏处是会引起Jar包冲突,我们后面会讲到。...如果C中方法使用了G21版本中某个新方法(或),由于Maven处理,导致G21并未被引入。...此时,程序在调用对应便会抛出ClassNotFoundException异常,调用对应方法便会抛出NoSuchMethodError异常。...具体分两种情况: 情况一:项目依赖了同一Jar多个版本,并且选错了版本; 情况二:同样在不同Jar包中出现,导致JVM加载了错误; 情况一,也是本文重点讨论场景,也就是说引入了多个Jar...由于(不懂)Maven依赖树仲裁机制导致Maven加载了错误Jar包,从而导致Jar包冲突; 情况二,同一在不同Jar包中出现(上篇文章中有详细描述)。

1.4K40

java开发常用工具google guava

GuavaGuava是一个Google开源Java核心库,它提供了许多实用工具和辅助,使Java开发更加简洁、高效、可靠。目前和hutool一起,是业界常用工具库。...shigen也比较喜欢使用,在这里列举一下常用工具库和使用案例。...参考:整理一波Guava使用技巧 - 掘金Guava中这些Map骚操作,让我代码量减少了50% - 掘金pom依赖 com.google.guava...缓存大小限制:设置缓存最大容量,当缓存超过设定容量,可以通过一些策略(比如使用 LRU 或 FIFO)来自动淘汰一些不常用缓存项。可以使用 maximumSize 方法设置缓存最大容量。...弱引用键或值:CacheBuilder 提供了一些选项,可以使用弱引用持有缓存键或值。当没有其他地方引用某个键或值,缓存会自动将其从内存中移除,以避免内存泄漏。

46310

Jar 包依赖冲突排查思路和解决方法

在 Java 项目中,我们通常会使用 Maven 或 Gradle 等工具管理项目的依赖。当我们添加一个新依赖,这个依赖又可能依赖其他 Jar 包。...这种情况下,就有可能出现 Jar 包之间依赖冲突。依赖冲突表现形式通常是,当我们运行项目,Java 虚拟机会提示找不到某个或者方法,或者在编译出现错误。...方法二:查看 Jar 包内容如果已经确定存在 Jar 包依赖问题,可以使用文本编辑器或解压缩工具查看 Jar 包内容,找到并比较相应文件或配置文件。...例如,在 pom.xml 文件中排除 com.google.guava 依赖: org.springframework.boot...例如,使用 Tomcat 容器,我们可以使用其 classloader,将不同依赖加载到不同加载器中。

2.1K40

hive自定义udf实现md5功能

最近在使用hive1.2.0版本,因为要给有一列数据生成md5签名,便于查重数据使用,看了下hive官网文档发现是支持,后来在Hue里面试了下,发现不支持,还以为是Hue问题于是在后台hive...UDF,非常简单,Hive应该也不会太难,看了官网文档,果然非常easy,下面看下步骤: (1) 继承UDF,定义evaluate方法 注意,这里用是maven项目,只需要引入hive-exec包即可...jar包 程序完成后,打包jar,然后上传到对应机器上,开始注册自己UDF函数,这里有两种方式: ---- A:临时注册 执行hive命令,进入终端: add jar /home/hive/udfs.../hive-md5-guava-1.0.0.jar;create temporary function md5 as 'com.easy.md5.MD5';select md5('hadoop');--...-guava-1.0.0.jar /user/tez/ 进入hive终端 CREATE FUNCTION md5 AS 'com.easy.md5.MD5' USING JAR 'hdfs:///user

2.7K40
领券