问题标签 [java-14]
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 - 此代码段是否正在编译?我不这么认为 Java 14 记录
周末我在阅读一些关于 Java 14 预览特性的记录。我不想问这个问题,因为它似乎是 Brian Goetz 的代码,我们都知道这个人是谁,代表 Java 生态系统,但这一直在我的脑海里,我知道它会学习为了我。
是这样的。
我假设这条线返回一个分数参考。
也许在我理解它试图做什么之前你已经看到了它,但有些东西我不明白。也许我错了。
这条线
的APIcomparingInt
是这样的。
但只要我理解方法参考
从 Records 元组返回 Score 引用对吗?不是整数或导致整数
或者这会使代码编译我认为可能是一个打字错误。
正如我之前所说,根据我的理解,这段代码不会编译;也许我错了。
java - 使用 Oracle JDK 14 时,所有 gradle (6.2.2) 任务都失败并显示“无法初始化类 org.codehaus.groovy.runtime.InvokerHelper”
我安装了 JDK 14 并开始使用它。
但是,使用 Gradle 6.2.2 的项目无法运行,并且每次我尝试调用 Gradle Task 时都会出现以下错误:
无法初始化类 org.codehaus.groovy.runtime.InvokerHelper
其他项目,例如 Maven 项目和纯 Java 项目,可以在 Java 14 上正常工作。
重现此错误的一种简单方法是创建一个新文件夹并尝试运行该init
任务。
例如:
gradle init --type basic
FAILURE:构建失败并出现异常。
出了什么问题:无法初始化类 org.codehaus.groovy.runtime.InvokerHelper
尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。
在https://help.gradle.org获得更多帮助
在 878 毫秒内构建失败
运行此示例的 PC 使用的是 windows 10。java 版本为:
java --版本
java 14 2020-03-17 Java(TM) SE 运行时环境 (build 14+36-1461)
Java HotSpot(TM) 64 位服务器 VM(内部版本 14+36-1461,混合模式,共享)
有什么解决方案可以让 Gradle 6.2.2 与 Oracle JDK 14 一起工作吗?
java - JPackage 仅返回 Java 14 上的 SDK 版本号
我最近将我们的 Java 11 应用程序移植到了新发布的 Java 14 (ZuluJDK)。当尝试通过命令行使用新的 JPackage 打包我们的应用程序时,无论我使用哪个 jpackage-command,唯一发生的事情是以下输出:
一个示例命令(审查了一些东西,由 < > 占位符表示......):
有人可以帮助我是什么原因造成的吗?sdk 版本的输出并没有提供太多帮助。
java - Netbeans 11.3 和 Java 14 预览功能
我使用 Java 14 作为 Netbeans 11.3 的默认 Java 平台(netbeans_jdkhome 设置为我的 Java 14 JDK)并尝试在简单的 Java 应用程序中使用预览功能。我将源级别设置为 14 并将 --enable-preview 设置为编译器参数。代码编译没有错误。
但是,当我尝试在 Netbeans 中运行它时,它抱怨 .class 文件的主要版本是 57,而运行时只能很好地处理 58 个文件和预览功能。这是错误:
java.lang.UnsupportedClassVersionError:javaapplicationtest14/JavaApplicationTest14(类文件版本 57.65535)使用不受支持的预览功能编译。此版本的 Java 运行时仅识别类文件版本 58.65535 的预览功能
我检查了 .class 文件的主要版本,它们确实是 57。任何想法为什么我的项目不会编译成 Java 14 级别?我正在使用 Ant 构建。
java - Java 记录和 Lombok 注释 - IntelliJ
只是尝试动手操作java.lang.Record。我已经阅读了文档和JEP-359以获得一些理解。因此,在阅读了构造函数的隐式声明后,我想到了将它与现有的代码生成库 - Lombok 混合起来!
现在我最终创建的一个最小的可重现示例就是这条记录
当使用 IntelliJ 编译成功生成类文件时,它看起来像
请注意,.class
文件的构造函数也正是我在这两个世界中独立所期望的。但是,在 IntelliJ 编译期间进一步尝试创建此记录的实例失败:
我将创建一个更简单的示例来javac
使用工具执行编译和执行java
。如果这是由于我可能忽略的某些事情而可能发生的预期行为,我仍在寻找答案?
这就是它在 IntelliJ 中反映的两种情况 - 有和没有@AllArgsConstructor
.
java - 将类转换为记录时的兼容性问题
我一直在使用以下名为City
并试图将其转换为被record
称为CityRecord
但是转向这样的表示,我们的一个单元测试开始失败。测试在内部处理从 JSON 文件读取的城市列表,并映射到进一步计算城市的对象,同时将它们分组到Map
. 简化为:
上面的代码断言 true 包含 4 个键,每个键占其出现的 1 个。使用记录表示,结果中的键不超过 3 个Map
。是什么导致了这种情况,应该采取什么方法来解决这个问题?
java - JPackage 在创建 DMG 之前将文件复制到 app 的 Resource 文件夹
我在 MacOS 上使用 Java 14 的 JPackage,需要在构建 DMG 之前将文件复制到应用程序的 MacOS 和 Resources 文件夹,但不知道如何操作。在打包工具用户指南中,它提到从名为 application-name-post-image.sh 的资源文件夹运行脚本,但这似乎没有发生。
java - JPMS:--add-opens 不适用于 java.lang.reflect.InaccessibleObjectException
我将 Java 14 与 Jetty 9.4 和 Weld-servlet-shaded-3.1 一起使用,我得到了这个异常:
根据这里的回答:https ://stackoverflow.com/a/41265267/5057736我试图添加
和
但是没有人帮忙。有人能说如何解决吗?
编辑 1
我发现这个问题出现在 Java 12、13、14 OpenJDK/Oracle 中。但是,如果我使用 Java 11 OpenJDK/Oralce 一切正常,我什至不添加任何--add-opens
. 怎么解释?
编辑 2
我检查了Jetty pom和Weld pom它们都具有相同的属性:
编辑 3
Java 版本
开始申请
这是堆栈跟踪
编辑 4
我发现由于焊接而发生了不同的行为。这是来自 ClassFileUtils 的片段:
正如您在第 88 行看到的那样,ti 调用了被 JPMS 阻止的 setAccessible(true) 方法。那么,考虑到 Weld 和 Jetty 在子 JPMS 层中,最后一个问题是否可以通过 JPMS 设置来解决这个问题?
java - 具有预览功能的 Maven Exec 插件
使用以下代码编译 Java 源代码很容易--enable-preview
:
但是你怎么能跑exec:java
呢?使用
仍然导致以下错误: