当前位置: 首页 > 面试题库 >

在Java 8中构建时出现“未定义的引用:.. ConcurrentHashMap.keySet()”

子车鸿才
2023-03-14
问题内容

我有一个项目,我用jdk 6,7,8构建了这个项目,我的目标是1.6

当我构建JDK 8时出现此错误:

Undefined reference: java.util.concurrent.ConcurrentHashMap.KeySetView java.util.concurrent.ConcurrentHashMap.keySet()

由于我在该行中有此代码:

   final Iterator<CLASS_NAME> itr = hashMap.keySet().iterator();

如何避免错误,我在Internet上进行了一些搜索,并且由于Java 8更改了其返回类型键集,因此出现了错误。这是任何解决方案吗
我正在使用Maven,而Animal-Sniffer-Plug会给出此错误,并带有签名错误。


问题答案:

另一个答案建议对您的代码进行修改(使用keys()代替keySet()),以便您可以在Java 8上编译源代码并在Java
7上运行。我认为这是一个倒退的步骤。

代替:

  • 如果您的目标是创建将在Java 6、7和8上 运行 的软件的生产版本,那么最好的选择是在JDK 6上进行生产版本。

  • 如果您的目标是在Java 8上进行开发(但现在仍在源代码级别上向后兼容),则可以更改animal-sniffer的maven插件配置,以忽略这些类。有关说明,请参见http://mojo.codehaus.org/animal-sniffer-maven-plugin/examples/checking-signatures.html

但是,存在动物嗅探器会忽略太多的风险。例如,它不会告诉您是否在中使用了 新的 Java
8方法ConcurrentHashMap。您将需要考虑到这种可能性....

  • 如果您的目标是转向Java 8(以便可以开始在代码中使用Java 8的新功能),则只需这样做。您的代码不会向后兼容,但是您永远无法支持Java的旧版本…

(如果考虑全局,这些建议不是相互排斥的。)



 类似资料:
  • 问题内容: 我刚刚开始学习使用Webpack(以前,我只是使用手动方式分别包含各个脚本)。我用来加载引导程序。这是我的webpack.config.js 这是我的entry.js 这似乎有效。但是,我之前使用过它,但是它不起作用: 我发现有很多人建议使用上述方法。但是我只是在加载页面时出错。,webpack问题 后来我找到了这个问题,。因此,该页面实际上也可以与bootstrap js功能一起使用

  • 我想用get方法获取有关邮递员的信息。但每当我“localhost:3000/api/mekanlar/mekan的objectid”时,我就会得到引用错误“mekan未定义”。这是我的mekansema。/app\u api/models中的js文件。 还有mekanlar。/app\u api/controllers中的js文件 这是索引。js in/app\U api/routes。

  • 我正在尝试建立一个共享库,可以用来访问本机蓝牙API函数。我目前正试图编译一个c文件:https://android.googlesource.com/platform/external/bluetooth/bluedroid/ 每当我尝试将这些代码中的任何一个编译为共享库时,我都会收到许多未定义的引用错误...它看起来像是头文件引用的每个函数。在我最近的尝试中,我将整个Bluedroid/bta

  • 我有一个简单的Android NDK代码与JNI。不幸的是,由于错误,它无法生成: 我已经检查了其他带有相同错误的Stackoverflow问题。但没有一个与我的文件结构相似。

  • 但是,我一定遗漏了什么,因为在构建项目时,我得到了一个关于OpenCL函数的未定义引用错误。这是完整的错误:任务“:App:ExternalNativeBuildArm8Debug”执行失败。 你知道我错过了什么吗?在过去的两天里,我搜索了几个小时关于如何在Android Studio中设置OpenCL的问题,但我找到的所有东西似乎都过时了,似乎对我的问题不起作用。

  • 问题内容: 我正在尝试在操作系统上设置libusb API。我在libusb.org上下载了libusb api。我遵循了标准的安装过程: 然后,我启动了Eclipse C / C ++,并从Internet上的教程中复制了一些代码。但是当尝试构建它时,我得到以下输出: 我在/ lib中有libusb.so,在/ usr / local / include中也有usb.h,在/ usr / loc