问题标签 [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.
java - 如何解决 Netbeans 12.0 IllegalAccessError?
我刚刚安装了 Netbeans 12.0。当我开始我的第一个项目时,我在创建一个新的 java 类后收到了意外的错误消息。关于如何处理它的任何建议?
这是消息:
这是我的系统信息:
java - Java 16 中的 Unix 套接字
我在JEP-380中看到 Java 现在可以与 UNIX 套接字通信。使用它将服务器投入生产是否已经可靠?
是否有任何高级框架已经实现了 UNIX 套接字?
java - 如何解决错误:找不到工件 sun.jdk:jconsole:jar:jdk
从 Java 8 升级到 Java 16 后出现此错误
我正在使用 IntelliJ
我的 pom 文件
我试图通过将其添加到 pom 文件来解决此问题:
我运行这个命令来构建项目
java - IntelliJ2021.1 IDEA x64(Windows 10) Kotlin REPL 运行错误
我通过 Codelab 中的 Kotlin Bootcamp for Programmers 开始学习 Kotlin。
在第一部分中,我创建了 Kotlin 项目并启动了(?) Kotlin REPL(工具>Kotlin>Kotlin REPL)。
但是,发生了以下错误。
而java和javac版本是
我想解决这个问题。
java - Java 11 Curve25519 实现不像 Signal 的库
在 Java 11 中引入了 curve25519 内置实现。由于我对此一无所知,并且最近才发现它,因此我正在使用Signal 的库。这是我在切换到 Java 11 实现之前的代码:
这是我现在的代码:
显然,第二个实现不起作用,而第一个实现。最初,我认为我做错了什么,所以我阅读了文档并检查了类似的答案,但是,由于我没有发现任何有用的信息,我决定进一步挖掘并尝试检查 Signal 的库和 Java 是否生成相同的公钥给私人的。为此,我写了这个片段:
(Java 实现之后用于计算公钥的代码是从 sun.security.ec.XDHKeyPairGenerator 中提取的)
此方法打印 false,这意味着这两个实现实际上的行为方式不同。在这一点上,我想知道这是一个 Java 错误还是我遗漏了什么。提前致谢。
java - Java 记录和字段注释
当我们在 Java 中使用类时,为每个类字段/方法添加 JavaDoc/comment 非常简单:
如果我们将这些类迁移到 Java 记录,那么在这种情况下编写注释/JavaDocs 的最佳实践是不清楚的:
因为现在所有字段都在一行中声明。
java - 通过 modulepath 在 jdk16 上使用 Ant 构建 jar
我正在开始从 java 8 迁移到 java 16。我正在尝试使用 ModulePath 而不是 ClassPath。为了测试迁移,我在 com.test.main 中创建了一个只有一个类 (Main.java) 的简单新项目。我也需要 javafx 库。我的 module-info.java 进行导入:
你可以在这里看到我的项目目录
我使用 ant 来构建我的项目,所以我尝试对其进行调整。
当我运行它时,一切都很好,Ant 构建已正确完成。但是,当我尝试使用以下命令运行我的 jar 时:
我收到了这个错误:
有人知道我做错了什么吗?谢谢你的帮助。
java - Java 记录序列化和对规范构造函数的重复调用
在这篇关于可序列化记录的帖子中指出
反序列化通过调用记录类的规范构造函数创建一个新的记录对象,将从流中反序列化的值作为参数传递给规范构造函数。这是安全的,因为这意味着记录类可以在将值分配给字段之前对其进行验证,就像普通 Java 程序通过 new 创建记录对象一样。“不可能”的物体是不可能的。
这与仅用于验证的构造函数争论。但是,当构造函数操作参数时,这会导致相当奇怪的行为。考虑这个非常人为的简单示例:
以下记录a
在保存之前对其进行操作:
下面的程序只是第一次保存序列化的记录并在随后的时间加载它:
第一次运行的输出是TRecord[a=4]
,TRecord[a=3]
在随后的运行中,我从反序列化中得到的状态与我在那里输入的不同。使用类似下面的类似课程TClass[a=4]
每次都会得到相同的结果。
所以我的问题是:是否有任何规则禁止/不鼓励使用构造函数进行验证以外的任何操作(例如,我正在考虑在存储输入之前散列密码)?还是有另一种方法来反序列化对象以恢复初始状态?
java - 为什么我不能使用 Stream#toList 来收集 Java 16 中的类接口列表?
我正在流式传输实现接口的类的对象。我想将它们收集为接口元素的列表,而不是实现类。
这对于 Java 16.0.1 的Stream#toList
方法来说似乎是不可能的。例如在下面的代码中,最后一条语句将无法编译。
我们可以显式地将每个元素从FancyDodo
转换为Dodo
。但至少为了简洁起见,我们也可以使用.collect(Collectors.toList())
.
为什么我不能使用 Stream#toList 来收集 Java 16 中的类接口列表?
如果有人有比明确铸造更好的解决方案,我也很乐意听到:)