java-11 相关问题

将此标记用于特定于Java 11的问题,Java 11是Java平台的第11版,于2018年9月25日发布。在大多数情况下,您还应指定java标记。

将带有字符串集的映射转换为带有字符串的映射

这个问题并不难,我已经用自己的方式解决了,但我想听听你的意见,也许有什么方法可以使它成为一个改进的选择? Java 8-11。 地图 这个问题并不难,我已经用自己的方式解决了,但我想听听你的意见,也许有什么方法可以使它成为一个改进的选择? Java 8-11. Map<Set<String>, User> --> Map<String, User> 想象一下,集合内的元素不会重复。另请注意:许多唯一的键可以指向相同的值。 我用以下代码做了这个: Map<String, User> result = new HashMap<>(); existingMap.forEach((set, user) -> set.forEach(item -> result.put(set, user))); 所以,我的问题是 - 有更好的方法吗?我的意思是,也许 Stream API 已经有一些方法可以做到这一点?在“收集”方法的范围内 如果你想使用收集器,你可以先做一个flatMap,然后toMap: Map<String, User> result = existingMap.entrySet().stream().flatMap( entry -> entry.getKey().stream() .map(s -> Map.entry(s, entry.getValue())) ) .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); 或者,如果您只想使用 collect (这与您原来的方法更相似): Map<String, User> result = existingMap.entrySet().stream().collect( HashMap::new, (map, entry) -> entry.getKey().forEach(x -> map.put(x, entry.getValue())), HashMap::putAll ); 这个问题无法解决。 考虑以下因素: ("Bill", "Tom", "Alice") -> User1 ("Bill", "Tom", "Jane") -> User2 这对于结构 1 (Map<Set<String>, User>) 有效,但对于结构 2 (Map<String, User>) 无效,因为它会导致数据丢失(有关 Bill 和 Tom 的信息将丢失)。 您可以考虑的另一种结构是从 Map<Set<String>, User> 到 Map<String, Set<User>> 的转换,这不会导致数据降级。 编辑:根据评论假设数据丢失是可以接受的,正常的 for 循环解决方案是: Map<String, User> results = new HashMap<>(); for (Set<String> key : existing.keySet()) { User v = existing.get(key); for (String k : key) { results.put(k, v); } }

回答 2 投票 0

无法将 /JStatRemoteHost 绑定到 RMI 注册表

我正在我的机器上的 docker 容器内运行 Java 11 应用程序,并尝试通过 VisualVM 连接它。 我已经在 Dockerfile 的 CMD 指令中添加了所需的 JMX 参数 -Dcom.sun.

回答 1 投票 0

尽管安装并配置了 jdk17,Gradle 编译器仍然针对较旧的 Java 版本

我使用的是react-native 0.72.5。 Ubuntu 上的 Openjdk 版本“17.0.13”。 一切都工作正常,直到我构建了 apk。从那时起,该项目就无法在我的设备/模拟器上运行。它...

回答 1 投票 0

在任何给定点如何从 pod 中收集正在运行的程序的 HeapDump

我有 Springboot 应用程序,它使用 OpenJDK 在容器中运行并以 pid 1 运行。这些是非根容器,并且启用了 imx 远程。我正在尝试根据需要为这些运行生成堆转储...

回答 1 投票 0

Java HashMap 迭代顺序 - 尽管文档另有说明,但行为似乎是一致的

我正在学习 Java 中的 HashMap,我对迭代顺序感到困惑。文档指出,HashMap 不保证任何特定的迭代顺序,但在我的简单测试中,顺序

回答 1 投票 0

IntelliJ 无法检测到 jdk.crypto.cryptoki 包

我尝试在 IntelliJ 中使用 jdk.crypto.cryptoki/sun.security.pkcs11.wrapper.PKCS11,但由于某种原因它不断抛出错误。似乎无法检测到这个包。解决方案之一...

回答 1 投票 0

Eclipse 导出需要找不到“osgi.ee”

我尝试将 Eclipse 插件项目导出到 .products 文件中。 “缺少要求:Eclipse 作业机制 3.12.0.v20210723-1034 需要 'osgi.ee; (&(osgi.ee=JavaSE)(version=11))' 但它

回答 1 投票 0

Cassandra datastax 3.11.5 兼容性

我使用了 datastax 驱动程序 3.11.5 版本来连接到 4.x 版本中的 cassadra 实例。这兼容吗? 另外,当我使用 cassandra-unit 版本 4.3.1 中的 EmbeddedCassandraServiceHelper 时...

回答 1 投票 0

无法将字段设为静态最终布尔值 java.math.BigDecimal

我有一个 Spring Feign 客户端,它使用 POST 将 POJO 对象发送到远程端点: SaleRequestFactory obj = new SaleRequestFactory(); obj.setId(insertedTransaction.getId()); 对象。

回答 1 投票 0

自从在 Linux 上迁移到 Java 14 以来,无法执行生成帮助程序错误

刚刚从 Java 11 迁移到 Java 14。 以下代码现在在 Linux 机器上失败: String linux_exe = System.getProperty("user.dir") + '/' + "fpcalc_arm32"; 列表 刚刚从 Java 11 迁移到 Java 14。 以下代码现在在 Linux 计算机上失败: String linux_exe = System.getProperty("user.dir") + '/' + "fpcalc_arm32"; List<String> params = new ArrayList(); params.add(linux_exe); params.add("-plain"); params.add("-length"); params.add(submittedSongLength); params.add(file.getPath()); Process p = Runtime.getRuntime().exec(params.toArray(new String[1])); 带有堆栈跟踪 Cannot run program "/mnt/system/config/Apps/SongKong/songkong/fpcalc_arm32": error=0, Failed to exec spawn helper: pid: 13998, exit value: 127 java.io.IOException: Cannot run program "/mnt/system/config/Apps/SongKong/songkong/fpcalc_arm32": error=0, Failed to exec spawn helper: pid: 13998, exit value: 127 at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128) at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071) at java.base/java.lang.Runtime.exec(Runtime.java:590) at java.base/java.lang.Runtime.exec(Runtime.java:449) at com.jthink.songkong.analyse.acoustid.AcoustId.generateFingerprint(AcoustId.java:217) at com.jthink.songkong.analyse.acoustid.AcoustId.createAcoustIdFingerprint(AcoustId.java:106) Java 14 中发生了什么变化会导致这种情况? 我使用 Java 14 在 Windows 上运行了等效代码,并且运行正常。但我在这台 Unix 机器上使用 Java 11 和 Java 14 重试了相同的代码库,并且可以确认 Java 11 始终有效,而 Java 14 始终失败。 我发现了这个问题,我在 Openjdk Bugs 数据库上遇到了这些问题 为Runtime.exec提供在linux上使用posix_spawn的方法 和 将 Linux 上默认的进程启动机制更改为 posix_spawn 基本上在 Java 11 中,Linux 使用 vfork 来启动进程,但到了 Java 13,它现在使用 posix_spawn。 posix_spawn 实际上需要一个名为 jspawnhelper 的程序,该程序位于 jre/lib 中。在我的例子中,它存在,但它没有执行权限,这是因为我使用 jlink 构建一个只有我需要的系统模块的 jre,但我在 Windows (我的主开发环境)上创建它。 call "C:\Program Files\AdoptOpenJDK\jdk-11.0.6.10-hotspot\bin\jlink" --module-path="C:\Code\jthink\SongKong\linux_jdk\jmods" --add-modules java.desktop,java.datatransfer,java.logging,java.management,java.naming,java.net.http,java.prefs,java.scripting,java.sql,jdk.management,jdk.unsupported,jdk.scripting.nashorn --output C:\code\jthink\songkong\linuxjre Windows 不理解 Linux 执行权限,当我部署应用程序时,我对 jre/bin 中的可执行文件设置了执行权限,但不知道 jre/lib 中存在任何可执行文件。更改 jspawnhelper 的执行权限可以修复该问题。 另一种解决方法是添加以下 java 选项: -Djdk.lang.Process.launchMechanism=vfork 同一错误消息的另一个相当奇特的原因可能是操作系统在程序运行时更新了 java 发行版,然后程序尝试执行外部进程。这发生在我们部署的服务器上,客户端更新了 java 发行版。解决方案就是重新启动服务。 我已重新启动 Jenkins 服务器。它解决了我的问题。 :) 就我而言, 我只是在 Jenkins 中更新了 Git 插件,然后重新启动 Jenkins 以应用更改。

回答 4 投票 0

为 Oracle 19c 和 JDK 11 选择的最佳 JDBC 驱动程序

我并不完全清楚支持 Oracle 19c 的 JDBC 驱动程序之间的差异。我正在 Red Hat 上使用 OpenJDK 11.0.24 运行应用程序,我似乎有以下选项: 甲骨文

回答 1 投票 0

Spring Cloud Config 不获取配置文件

我刚刚将我们的 Spring Boot 项目从 boot 升级到 v2.6.2,从 Spring Cloud 升级到 2021.0.0。 现在我的远程配置获取不起作用,并且应用程序无法获取正确的属性

回答 1 投票 0

为什么我在 javac 模块编译过程中出现错误?

尝试使用以下命令编译我的模块 moduleA 时 javac --模块源路径 src -d out -m moduleA 我收到以下错误 错误:在模块源代码中找不到模块 moduleA...

回答 3 投票 0

新建flutter项目无法运行(java版本错误)

当我创建新的 flutter 应用程序时,出现错误: > 失败:构建因异常而失败。 * 在哪里: 构建文件'/Users/cansukaluc/flutter-projects/fortune_validator_app/android/app/build.grad...

回答 1 投票 0

如何修复 MobaXterm 上不正确指定的虚拟机选项“maxmetaspacesize”

我正在尝试使用 mobaXTerm 启动本地集群。我正在使用: 弗林克 1.15.3 MobaXterm 23.6 jdk 11或jdk 8(是相同的错误) Windows 10 我正确注册了所有环境变量,但是...

回答 1 投票 0

适用于Windows 7 32位系统的Java 11 JDK

我想在我的 Windows 32 位系统上安装 Java 11。 我搜索过此官方 Java 11 下载页面,不包含任何 32 位系统的下载。 但我仍然没有失去希望,我看到了......

回答 3 投票 0

JDK 11+ 和 Javadoc

退出代码:1 - javadoc:错误 - 记录的代码使用未命名模块中的包,但是 https://docs.oracle.com/en/java/javase/11/docs/api/ 中定义的包位于命名模块中。 ...

回答 8 投票 0

如何使用--module-source-path编译Java模块?

我正在尝试编译一个 Java 模块,该模块位于与我的项目源根目录不同的目录中。这是我的项目结构: 基础测试 1: │ .gitignore │ 基础测试-1.iml │...

回答 1 投票 0

了解Java中两种Thread实现方式的区别?

我正在学习 Java 线程,并且遇到了两种不同的创建线程的方法。我不确定它们之间的技术差异: // 方法1 线程 n = 新线程(新

回答 1 投票 0

使用 Java 8 编译 Gradle Java 项目,但使用 Java 11 运行测试

作为我的项目过渡过程的第一部分,我想继续使用 JDK-8 编译器进行编译,但使用 JDK-11 运行时执行测试。 我的项目是 Gradle 项目(6.+ 如果重要的话),

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.