问题标签 [java-17]

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 投票
0 回答
741 浏览

java - 切换到java 17后`无法识别的VM选项'CMSClassUnloadingEnabled'`

将 Java 版本更改为 17 后,我无法构建 Gradle 项目。

我正在使用 Gradle 7.3.1 版本,并且在 Gradle 属性中有以下行:

然后我收到以下错误

如果我删除-XX:+CMSClassUnloadingEnabled然后我得到这个错误:

0 投票
1 回答
483 浏览

java - 无法将 Java 版本切换到 Java 17

由于有人将我的问题转移到一个没有太多活动的社区并且评论中提供的解决方案不起作用,因此再次发布。

我已经从这里安装了 Amazon Corretto Java 17 。

但是,我无法将 Java 版本切换到 Java 17。

以下是我已经尝试过的步骤:

1.

  1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home
  2. 我还使用以下命令检查了 Java 的最高版本: /usr/libexec/java_home它显示了正确的 Java 17 版本: /Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home
  3. 我还使用命令检查了我机器上安装的所有 Java 版本,/usr/libexec/java_home -V它正确显示了 Java 8、11 和 17:
  1. 我还添加了和to和toJAVA_HOME中提到的导出。step-1step-2.zshrc.bash_profile
  2. 我也关注了有关 StackOverflow 和多个博客的多个问题。例如,

如何在 macOS 上设置或更改默认 Java (JDK) 版本?

在 mac OS 上切换 java 版本

https://java.tutorials24x7.com/blog/how-to-switch-java-version-on-mac

https://www.lotharschulz.info/2019/08/21/mac-change-default-java-version

https://akrabat.com/using-jenv-to-select-java-version-on-macos/

https://www.happycoders.eu/java/how-to-switch-multiple-java-versions-windows/

  1. jenv用来在不同的java版本之间切换。甚至jenv无法找到 Java 17。我使用jenv versions了以下是输出:
  1. 我还检查了JAVA_HOME指向Java 17. 这是屏幕截图:屏幕截图


即使在我执行上述所有步骤之后java --version,它仍然设置为 Java 11:

  1. 我还检查了PATH变量,似乎没有什么与 Java 相关。以下是路径变量的输出:

有人可以帮我理解我是否在这里遗漏了什么。谢谢你。

0 投票
1 回答
177 浏览

open-closed-principle - Java 17 中的密封类,以及开闭原则

在 LTS 版本的 Java (Java 17) 中,我们第一次有了sealed关键字,简而言之,我们可以限制层次结构:

如果我想创建一个扩展Person基类的新子类,我也必须修改基类。这是否违反了开闭原则?

0 投票
1 回答
92 浏览

java - Java Module-Info 'Uses' 指令(服务消费)

我正在使用一种新的随机生成器算法(https://openjdk.java.net/jeps/356):

RandomGeneratorFactory.of("L128X1024MixRandom").create().nextDouble();

它有效。使用 jpackage 工具后除外(https://openjdk.java.net/jeps/392

我得到异常

没有可用的随机生成器算法“L128X1024MixRandom”的实现

我尝试uses在我的 module-info.java (https://docs.oracle.com/javase/specs/jls/se17/html/jls-7.html#jls-7.7.3)中添加指令以指定使用该服务

uses java.util.random.RandomGenerator;

但这并不能解决它或似乎在那里很重要(我用错了吗?我认为这应该是解决方案)。

相反,我必须添加 jpackage 选项: --add-modules jdk.random

复制步骤

1. 用文件创建目录:

rngTest/com/example/Test.java

rngTest/module-info.java

rngTest/manifest.txt

2.从rngTest目录运行命令

(对于 macOS。需要--type dmg针对其他平台进行更改,请参阅https://openjdk.java.net/jeps/392

3.运行创建的安装程序,然后运行安装的应用程序

注意异常消息。

现在重新运行 jpackage 命令,--add-modules jdk.random然后重复步骤 3,注意成功。

0 投票
1 回答
318 浏览

java - JDK 1.8.x 的要求检查失败!检测到的版本:Windows 10 中的 17.0.1

我正在尝试为 Android 构建一个 apk。当我运行命令时ionic cordova build android出现错误:检查 Java JDK 和 Android SDK 版本 ANDROID_SDK_ROOT=C:\Users\myUserName\AppData\Local\Android\Sdk (推荐设置) ANDROID_HOME=C:\Users\myUserName\AppData\Local\ Android\Sdk(已弃用)JDK 1.8.x 的要求检查失败!检测到的版本:17.0.1 检查您的 ANDROID_SDK_ROOT / JAVA_HOME / PATH 环境变量。

应用程序·命令“cordova”失败,退出代码:1 个应用程序·更新 Cordova config.xml 应用程序·⚠️ [FAIL] Cordova CLI 失败

它说我需要 JDK 1.8.x,但它检测到但我很确定我安装了 JDK 1.8

我的 JAVA_HOME 环境变量设置为C:\Program Files\Java\jdk-17.0.1

我不知道为什么我无法构建应用程序。请帮忙!

0 投票
1 回答
842 浏览

java - jenv 在 MacOS 上找不到通过 brew 安装的 java 17

我正在尝试使用将 JDK 17 安装到 macOS BigSur (11.5.2)brew install openjdk@17

安装后jenv找不到java17的实例

0 投票
1 回答
162 浏览

java - 如何在 java 13 或更高版本中格式化 OffsetDateTime?

在 Java 11 中,时钟系统使用毫秒精度,但显然在 Java 13 及更高版本中,它使用微秒精度,这导致我的测试失败。例如,OffsetDateTime.now()当我从数据库“2021-12-10T10:58:05.309595+01:00”中读取该日期时,给我这个日期“2021-12-10T10:58:05.309594500+01:00”。我正在寻找一种方法,我可以以它们应该相等的方式格式化第一个日期。我确实希望它在 OffsetDateTime 类型而不是字符串中。

更新:我意识到当我将 java 版本从 11 升级到 17 而不是在本地时出现了这个问题,当 gitlab 运行测试时我遇到了这个问题。

这是测试:

由于日期时间不相等,此测试失败。这是日志:

请你帮助我好吗?

0 投票
1 回答
61 浏览

java - 使用 Micronaut 的 Java 类注册表

我正在尝试使用以下代码在 java 中进行类注册表

控制器

的返回getCmdType不正确,不确定Function.identity()。因此IRequestHandler<C, R> handler = (IRequestHandler<C, R>) handlerMap.get(c.getClass());始终为空

获取命令并向处理程序注册的最佳方法是什么

0 投票
2 回答
195 浏览

java - 在 Java 17 switch-case 中使用 final 变量的好处

有人能告诉我 Java 17 接受 final 表达式作为 switch-case-constructs 中的 case 表达式但不接受 final 表达式作为参数传递的好处吗?

为什么编译器不接受案例 1,尽管 foo 和 bar 一样是最终变量?

在我看来,案例 3 的可读性比案例 2 好得多。所以我看不到新语言结构的好处。

0 投票
0 回答
38 浏览

java - jlink 压缩插件性能损失

使用压缩插件创建较小的 java 运行时映像的性能损失是什么?我知道它存在,但是测试我的应用程序的单独版本时,我发现压缩版本和未压缩版本之间没有明显的区别。