问题标签 [java-15]
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 - Eclipse 2020-09 中的 Java 15 插件支持不再可用
这个问题与这个问题类似。我知道你需要这个插件来支持 Eclipse 2020-09 中的 Java 15,但是,它似乎不再可用。
当我尝试通过市场安装它时,我收到此错误:
在https://download.eclipse.org/eclipse/updates/4.17-P-builds/找不到存储库 。
有没有办法从其他来源安装它?
我知道 eclipse 2020-12 已经发布,但由于错误#569498(在 eclipse 2020-09 中没有发生),我们无法使用它。所以我们真的需要一种在 eclipse 2020-09 中安装 Java 15 支持的方法。
spring-boot - Spring Boot 2.4 及更高版本的 Mapstruct 和 Lombok 出现意外结果 此版本是否有任何解决方法或问题?
我正在使用 2.2.5 以上最新版本的 Spring boot 和 Java 15、lombok、Mapstruct 来映射一些 pojo。
使用spring boot 2.2.5 版时,我得到了预期的结果:
但是当使用2.4 及更高版本时,没有 builder,而是我有java new 关键字而不是其他字段,我得到:
这是不起作用的maven pom conf:BOM
我唯一更改的是 Spring Boot 版本,它按预期工作,请问 Spring Boot 2.4 及更高版本是否有任何解决方法或问题?
java - java 15 纳秒精度导致 Linux 环境出现问题
我们已将我们的应用程序更新到 Java 15,并且系统时钟的新增强到纳秒精度 ( https://bugs.openjdk.java.net/browse/JDK-8242504 ) 与 Postgres 中的 TIMESTAMP 限制不兼容。时间因底层操作系统而异,Mac (Big Sur) 中的 Instant 不会以纳秒为单位给出时间,但在 Linux 中会给出。
我们在我们的代码库中使用 Instant 类型。我们的测试正在比较内存中 Instant 类型的对象与获取的对象,因此它们会根据它们运行的操作系统而失败。
在 Linux 中,内存中的 Instant 对象具有纳秒的精度,而 Postgres 存储的 Instant (TIMESTAMP) 具有微秒的精度。断言失败:
在 Mac 中,Instant 对象的精度为微秒,与 Postgres 的时间戳精度完全一致,因此测试通过了,就像它们迄今为止所做的一样。
我们希望避免截断 Instant 或向 PG 添加插件以支持纳秒。
有人可以为这个问题提供更优雅的解决方案吗?
java - 密封类不编译,Eclipse 编译器错误?
我在 Eclipse 2020-09 和 2020-12 中有这两个课程:
A级
B类
但是,eclipse 编译器在 B 类中给了我一个编译器错误:
扩展密封类 Serializable 的类型 B 应该是 Serializable 的允许子类型
这似乎很奇怪,Serializable
甚至不是密封类。我在JEP-360中一无所获。删除“implements Serializable”可以解决该错误。
这是 Eclipse 编译器中的错误吗?
java - com.intellij.util.ReflectionUtil 对方法 java.util.ResourceBundle.setParent(java.util.ResourceBundle) 的非法反射访问
我在 VSCode 中编写了一些 kotlin 代码
其中之一是:
当我运行它时,我得到:
它有效,但我无法隐藏或修复警告,我使用 JDK 15
我没有在 IntelliJ 上收到这些警告
java - Java 中的文本块(或多行字符串)功能是什么?
Java SE 13 引入了文本块(或多行字符串)功能。它与现有的字符串表示有什么区别和相似之处?
java - JDK 15 中的 Ed25519,从字节数组中解析公钥并验证
由于 Ed25519 出现的时间不长(在 JDK 中),因此关于如何使用它的资源很少。
虽然他们的示例非常简洁和有用,但我很难理解我在密钥解析方面做错了什么。
他们的公钥是从 iDevice 发送的数据包中读取的。
(假设它是一个字节数组)
通过搜索并尽力了解密钥的编码方式,我偶然发现了这条消息。
这意味着,如果我想得到y
,isXOdd
我必须做一些工作。
(如果我理解正确)
下面是它的代码,但验证仍然失败。
我认为,我通过反转数组以将其恢复为 Big Endian 以供 BigInteger 使用,从而正确地做到了这一点。
我的问题是:
- 这是从字节数组中解析公钥的正确方法吗
- 如果是,那么它未能通过验证过程的可能原因是什么?
数据(操作前)(全部为十六进制):
以及操纵后的公钥:
非常感谢您,非常感谢您的每一点帮助。当 Ed25519 实施不会那么新鲜时,这将有助于更多的人在以后偶然发现这个问题。
java - 可重入锁实现细节
我试图了解ReentrantLock::lock
方法中的特定细节。我正在查看它并将其视为:
所以首先它尝试这个方法:(initialTryLock
我会看看NonfairSync
),它这样做:
- 它做了 a
compareAndSwap(0, 1)
,这意味着如果没有人持有锁(0
)并且我可以抓住它(1
),我现在持有锁。 - 如果上述失败,它会检查请求锁的线程是否已经是所有者。
- 如果失败,它会返回
false
,这意味着我无法获得锁。
让我们假设上述失败。然后它继续并acquire
调用AbstractQueuedSynchronizer
:
tryAcquire
它首先调用NonfairSync
:
您可以看到它再次尝试获取锁,尽管initialTryLock
已经失败。从理论上讲,这本tryAcquire
可以简单地返回false
,对吗?
我认为这是一次潜在的重试,因为在调用initialTryLock
and之间tryAcquire
,锁可能已被释放。这样做的好处可能是因为下一个操作(之后tryAcquire
)失败,是该线程的昂贵入队。所以我想这是有道理的(重试)因为那个?