不兼容的库版本selenium / guava(Incompatible library version selenium / guava)
我的应用程序非常依赖com.google.guava:guava:23.3
或更高版本
+--- com.github.ben-manes.caffeine:guava:2.6.0
| +--- com.github.ben-manes.caffeine:caffeine:2.6.0
| \--- com.google.guava:guava:23.3-jre (*)
但我也在使用org.seleniumhq.selenium:selenium-java:3.0.1
,它与guava版本> 22.0不兼容,如下所述:
https://github.com/SeleniumHQ/selenium/issues/4381
我对Java很陌生,这里最好的做法是什么?
我已经研究了类加载器,但看起来像一个非常深的兔子洞。
My app has a hard dependency on com.google.guava:guava:23.3
or superior
+--- com.github.ben-manes.caffeine:guava:2.6.0
| +--- com.github.ben-manes.caffeine:caffeine:2.6.0
| \--- com.google.guava:guava:23.3-jre (*)
But I am also using org.seleniumhq.selenium:selenium-java:3.0.1
which is incompatible with guava versions > 22.0 as discussed here:
https://github.com/SeleniumHQ/selenium/issues/4381
I am pretty new to Java, what is the best course of action here ?
I have looked into class loaders but that looks like a pretty deep rabbit hole.
原文:https://stackoverflow.com/questions/50284776
更新时间:2020-02-24 02:03
最满意答案
因为你对com.google.guava:guava:23.3
org.seleniumhq.selenium:selenium-java:3.0.1
依赖性com.google.guava:guava:23.3
使用org.seleniumhq.selenium:selenium-java:3.0.1
可能会让你在十字路口。 但是Selenium发行说明清楚地提到了以下番石榴依赖性:
Selenium v2.49.0
:Bump guava到19版
Selenium v3.1.0
:需要更新最新的番石榴版本21.0
Selenium v3.5.0
:Bump guava到22版。
Selenium v3.5.1
:Bump番石榴到版本23。
Selenium v3.12.0
: guava-23.6-jre
所以Selenium v3.12.0
有guava-23.6-jre ,显然符合你的要求。
As you have a hard dependency on com.google.guava:guava:23.3
using org.seleniumhq.selenium:selenium-java:3.0.1
may put you on cross roads. But Selenium Release Notes clearly mentions the following guava dependencies :
Selenium v2.49.0
: Bump guava to version 19
Selenium v3.1.0
: Requires an update to the latest guava version 21.0
Selenium v3.5.0
: Bump guava to version 22.
Selenium v3.5.1
: Bump guava to version 23.
Selenium v3.12.0
: guava-23.6-jre
So Selenium v3.12.0
have got guava-23.6-jre which clearly fits to your requirement.
2018-05-11
您正在寻找着色选项。 看到这里,但基本上你需要添加着色指令。 像这样的东西: assemblyShadeRules in assembly := Seq(
ShadeRule.rename("com.google.guava.**" -> "my_conf.@1")
.inLibrary("com.google.guava" % "config" % "11.0")
.inProject
)
对于喜欢maven的人来说,还有相应的maven-shade-plugin。 Y
...
测试包不在Guava版本中发布。 我认为这意味着番石榴测试本身,而不是普通大众。 这在Javadocs中也没有提及。 The testing package is not distributed in the Guava release. I think it is meant for the Guava tests themselves, not for the general public. It's not mentioned in the Javadocs either.
除了Files中相当基本的功能之外,Guava没有提供任何花哨的文件操作实用程序。 要复制整个目录,请使用其他库,例如commons.io.FileUtils.copyDirectoryToDirectory 。 Guava is not providing any fancy file manipulation utilities apart from the rather rudimentary functionality in Files. To copy whole directories
...
当您提交将使用Janusgraph从/向HBase读取/写入的Spark作业时,会发生此问题。 问题的真正原因是每个组件都需要不同版本的番石榴,它具有非常快节奏的提交,并且不能确保版本之间的兼容性。 这里是快速查看版本依赖 - Spark v1.6.1 - Guava v14.0.1 HBase v1.2.4 - Guava v12.0 Janusgraph 0.1.1 - 番石榴v18.0 即使您在CLASSPATH中使用了所有三个jar,由于版本冲突,您将继续使用guava。 我解决它的方法是
...
好的,我明白了。 问题是RoleConverter转换为ceylon.language.String ,而api期望转换为java.lang.String 。 现在修复它: shared class RoleConverter() extends Converter<Role, JString>() {
shared actual Role doBackward(JString? name) {
"Cannot convert null to role."
...
因为你对com.google.guava:guava:23.3 org.seleniumhq.selenium:selenium-java:3.0.1依赖性com.google.guava:guava:23.3使用org.seleniumhq.selenium:selenium-java:3.0.1可能会让你在十字路口。 但是Selenium发行说明清楚地提到了以下番石榴依赖性: Selenium v2.49.0 :Bump guava到19版 Selenium v3.1.0 :需要更新最新的番石
...
您可以从guava.jar中的META-INF /下的文件中获取版本字符串。 在运行时,您需要使用适当的ClassLoader实例来加载所需的META-INF /文件。 您可以使用Guava的Resources实用程序类直接加载具有唯一名称的资源,也可以使用$someGuavaClassName.class.getClassLoader().getResources(String)在多个jar文件中遍历具有相同名称的资源。 如果你使用后者,那么你将需要使用someGuavaClassName将在你
...
我相信从版本12开始,Guava已经是一个OSGi包,因此不再需要guava-osgi项目。 I believe that since version 12, Guava is already an OSGi bundle, so the guava-osgi project is no longer required.
从番石榴自己的解释来看,你必须使用Throwable ,是的。 这是他们的示例代码段: public void foo() throws IOException {
Closer closer = Closer.create();
try {
InputStream in = closer.register(openInputStream());
OutputStream out = closer.register(openOutputStream());
// d
...
目前尚不清楚您是想要ListMultimap还是SetMultimap ,但几乎可以肯定在任何情况下都需要ImmutableListMultimap和ImmutableSetMultimap 。 像所有不可变集合一样,它仍然会像LinkedHashMultimap一样保留插入顺序。 Guava的不可变集合非常故意不可扩展。 It's not clear whether you want a ListMultimap or a SetMultimap, but you almost certainl
...