问题标签 [java-16]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3923 浏览

java - 如何解决 Netbeans 12.0 IllegalAccessError?

我刚刚安装了 Netbeans 12.0。当我开始我的第一个项目时,我在创建一个新的 java 类后收到了意外的错误消息。关于如何处理它的任何建议?

这是消息:

这是我的系统信息:

0 投票
1 回答
77 浏览

java - Java 16 中的 Unix 套接字

我在JEP-380中看到 Java 现在可以与 UNIX 套接字通信。使用它将服务器投入生产是否已经可靠?

是否有任何高级框架已经实现了 UNIX 套接字?

0 投票
0 回答
244 浏览

java - 如何解决错误:找不到工件 sun.jdk:jconsole:jar:jdk

从 Java 8 升级到 Java 16 后出现此错误

我正在使用 IntelliJ

我的 pom 文件

我试图通过将其添加到 pom 文件来解决此问题:

我运行这个命令来构建项目

0 投票
1 回答
119 浏览

java - IntelliJ2021.1 IDEA x64(Windows 10) Kotlin REPL 运行错误

我通过 Codelab 中的 Kotlin Bootcamp for Programmers 开始学习 Kotlin。

在第一部分中,我创建了 Kotlin 项目并启动了(?) Kotlin REPL(工具>Kotlin>Kotlin REPL)。

但是,发生了以下错误。

而java和javac版本是

我想解决这个问题。

0 投票
1 回答
274 浏览

java - Java 11 Curve25519 实现不像 Signal 的库

在 Java 11 中引入了 curve25519 内置实现。由于我对此一无所知,并且最近才发现它,因此我正在使用Signal 的库。这是我在切换到 Java 11 实现之前的代码:

这是我现在的代码:

显然,第二个实现不起作用,而第一个实现。最初,我认为我做错了什么,所以我阅读了文档并检查了类似的答案,但是,由于我没有发现任何有用的信息,我决定进一步挖掘并尝试检查 Signal 的库和 Java 是否生成相同的公钥给私人的。为此,我写了这个片段:

(Java 实现之后用于计算公钥的代码是从 sun.security.ec.XDHKeyPairGenerator 中提取的)

此方法打印 false,这意味着这两个实现实际上的行为方式不同。在这一点上,我想知道这是一个 Java 错误还是我遗漏了什么。提前致谢。

0 投票
1 回答
218 浏览

java - 可以克隆记录吗?

我在谷歌上找不到任何关于使用记录的材料。Cloneable

我在想这样的事情:

这是一件好事吗?我们应该避免它以支持未来的枯萎吗?

0 投票
2 回答
698 浏览

java - Java 记录和字段注释

当我们在 Java 中使用类时,为每个类字段/方法添加 JavaDoc/comment 非常简单:

如果我们将这些类迁移到 Java 记录,那么在这种情况下编写注释/JavaDocs 的最佳实践是不清楚的:

因为现在所有字段都在一行中声明。

0 投票
0 回答
262 浏览

java - 通过 modulepath 在 jdk16 上使用 Ant 构建 jar

我正在开始从 java 8 迁移到 java 16。我正在尝试使用 ModulePath 而不是 ClassPath。为了测试迁移,我在 com.test.main 中创建了一个只有一个类 (Main.java) 的简单新项目。我也需要 javafx 库。我的 module-info.java 进行导入:

你可以在这里看到我的项目目录

我使用 ant 来构建我的项目,所以我尝试对其进行调整。

当我运行它时,一切都很好,Ant 构建已正确完成。但是,当我尝试使用以下命令运行我的 jar 时:

我收到了这个错误:

有人知道我做错了什么吗?谢谢你的帮助。

0 投票
1 回答
225 浏览

java - Java 记录序列化和对规范构造函数的重复调用

这篇关于可序列化记录的帖子中指出

反序列化通过调用记录类的规范构造函数创建一个新的记录对象,将从流中反序列化的值作为参数传递给规范构造函数。这是安全的,因为这意味着记录类可以在将值分配给字段之前对其进行验证,就像普通 Java 程序通过 new 创建记录对象一样。“不可能”的物体是不可能的。

这与仅用于验证的构造函数争论。但是,当构造函数操作参数时,这会导致相当奇怪的行为。考虑这个非常人为的简单示例:

以下记录a在保存之前对其进行操作:

下面的程序只是第一次保存序列化的记录并在随后的时间加载它:

第一次运行的输出是TRecord[a=4],TRecord[a=3]在随后的运行中,我从反序列化中得到的状态与我在那里输入的不同。使用类似下面的类似课程TClass[a=4]每次都会得到相同的结果。

所以我的问题是:是否有任何规则禁止/不鼓励使用构造函数进行验证以外的任何操作(例如,我正在考虑在存储输入之前散列密码)?还是有另一种方法来反序列化对象以恢复初始状态?

0 投票
3 回答
1805 浏览

java - 为什么我不能使用 Stream#toList 来收集 Java 16 中的类接口列表?

我正在流式传输实现接口的类的对象。我想将它们收集为接口元素的列表,而不是实现类。

这对于 Java 16.0.1 的Stream#toList方法来说似乎是不可能的。例如在下面的代码中,最后一条语句将无法编译。

我们可以显式地将每个元素从FancyDodo转换为Dodo。但至少为了简洁起见,我们也可以使用.collect(Collectors.toList()).

为什么我不能使用 Stream#toList 来收集 Java 16 中的类接口列表?

如果有人有比明确铸造更好的解决方案,我也很乐意听到:)