gpt4 book ai didi

java - NoSuchMethodError com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap$Builder.maximumWeightedCapacity

转载 作者:行者123 更新时间:2023-12-01 11:04:05 25 4
gpt4 key购买 nike

我正在运行 Java 测试程序来建立与 OrientDB 的连接,并且当我从 IntelliJ IDEA 或 OpenFire(xmpp 服务器)中运行代码时不断收到这些异常:

java.lang.NoSuchMethodError: com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap$Builder.maximumWeightedCapacity(J)Lcom/googlecode/concurrentlinkedhashmap/ConcurrentLinkedHashMap$Builder; at com.orientechnologies.orient.core.db.record.ridbag.sbtree.OSBTreeCollectionManagerAbstract.(OSBTreeCollectionManagerAbstract.java:43) at com.orientechnologies.orient.core.db.record.ridbag.sbtree.OSBTreeCollectionManagerAbstract.(OSBTreeCollectionManagerAbstract.java:48) at com.orientechnologies.orient.client.remote.OSBTreeCollectionManagerRemote.(OSBTreeCollectionManagerRemote.java:58) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:379) at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx$2.call(ODatabaseDocumentTx.java:2863) at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx$2.call(ODatabaseDocumentTx.java:2854) at com.orientechnologies.common.concur.resource.OSharedContainerImpl.getResource(OSharedContainerImpl.java:64) at com.orientechnologies.orient.core.storage.OStorageAbstract.getResource(OStorageAbstract.java:143) at com.orientechnologies.orient.client.remote.OStorageRemoteThread.getResource(OStorageRemoteThread.java:658) at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.initAtFirstOpen(ODatabaseDocumentTx.java:2853) at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.open(ODatabaseDocumentTx.java:260) at com.orientechnologies.orient.jdbc.OrientJdbcConnection.(OrientJdbcConnection.java:63) at com.orientechnologies.orient.jdbc.OrientJdbcDriver.connect(OrientJdbcDriver.java:52) at java.sql.DriverManager.getConnection(DriverManager.java:571) at java.sql.DriverManager.getConnection(DriverManager.java:187) at com.momentum.orientdb.core.JdbcConnectionManager.getConnection(JdbcConnectionManager.java:87) at com.momentum.orientdb.core.JdbcConnectionManager.getConnection(JdbcConnectionManager.java:56) at com.momentum.orientdb.core.JdbcConnectionManager$getConnection.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112) at com.momentum.orientdb.core.test.JdbcConnectionManagerTest.testGetConnection(JdbcConnectionManagerTest.groovy:26) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84) at org.junit.runner.JUnitCore.run(JUnitCore.java:160) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

知道为什么吗?我该如何修复它?

更新1

在我看来,它与这个库(来自 Google)有关:concurrentlinkedhashmap-lru-1.4.1.jar

但是我搜索了开发计算机的文件系统,只找到了上面提到的版本(1.4.1)。

更新 2 - 解决方案

彻底搜索后,我发现我的开发计算机的文件系统上有不同版本的 concurrentlinkedhashmap-lru-xxxx.jar ,并且不知何故我“设法”在构建中放置了两个不同的版本。

同时,在使用我的库(我已经测试过)以便从 OpenFire 中建立与 OrientDb 的连接时,我仍然遇到相同的异常,因为 OpenFire 使用并发链接 HashMap 的另一个版本,然后是 OrientDb 使用的版本(concurrentlinkedhashmap -lru-1.4.1.jar)。

最佳答案

NoSuchMethodError 发生是因为在运行时,Java 尝试调用对象上的方法,但发现它不存在,特别是:

com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap$Builder.maximumWeightedCapacity(J)Lcom/googlecode/concurrentlinkedhashmap/ConcurrentLinkedHashMap$Builder;

当然,如果是这种情况,您会期望代码无法编译,因此这几乎总是意味着您构建的类版本与运行时提供的版本不同 - 这通常是版本控制问题.

因此,您应该弄清楚您从哪个库获取 ConcurrentLinkedHashMap,并将其与运行时使用的版本进行比较(您如何部署它?它是直接从 IntelliJ 运行吗?) 。您可能会发现它们有不同的版本,并且您需要更改版本以匹配。

关于java - NoSuchMethodError com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap$Builder.maximumWeightedCapacity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33126644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com