问题标签 [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 投票
1 回答
953 浏览

java - Powermock 与 JDK 17 的兼容性

最近我正在将我的项目从 JDK 11 升级到 JDK 17。升级后,powermock 似乎有问题。在运行 AUT 时,我收到以下错误:

你知道这个问题的任何解决方法吗,如果有,请你提供解决方案。

0 投票
0 回答
41 浏览

java - 使用 JDK 17 (oracle) 的 DateTime 解析问题。漏洞?

将我的 Java 环境从 Java 11 (openjdk64-11.0.2) 升级到 Java 17 (oracle64-17.0.1),在 MacOS 上运行,我遇到了意外的日期格式解析错误。为了测试这一点,我编写了一个简短的 java 程序,然后在每个环境下编译并运行它。

这是在两种环境下运行的输出:

异常信息如下:

我很难相信 JDK 中存在错误,所以我错过了什么吗?提前致谢。

0 投票
1 回答
82 浏览

logback - java 17 logback SMTPAppender: AuthenticationFailedException: 220 准备启动 TLS

我使用 SMTPAppender 进行了以下 logback 配置,该配置在 Java 13 上运行良好,并且所有邮件都通过 AWS SES 发送而没有任何问题。

但是当我们设置 Java 17 时,邮件没有发送,并且调试模式显示以下错误:

您对如何解决此问题有任何想法吗?

0 投票
0 回答
574 浏览

maven - java.lang.reflect.InaccessibleObjectException 在 Java17 的 Junit 中

如果我使用 Java17 运行应用程序的 Junit 测试(在使用 Java8 构建应用程序之前),我会收到以下问题:

这里有一个 NullPointerException,在dwaApplicationService.getDwaApp();

0 投票
1 回答
1576 浏览

java - 无法使用 Java 17 编译的 JRE 1.8_311 运行 JAR

我正在使用 IntelliJ 和OpenJDK 17创建一个 JavaFX 应用程序。项目语言级别设置为 17。创建 JAR(构建工件)后,我尝试使用JRE 1.8.0_311执行它。当我这样做时,我收到此错误:

据我了解,这个错误意味着我的代码是用 Java 17 编译的,但我的 JRE 只能运行 Java 8 代码。我尝试使用 OpenJDK 运行 .jar 并且它可以工作。

提前致谢。

0 投票
1 回答
193 浏览

java - Java 更新到 17 版本后 CompletableFuture 的 java.lang.reflect.GenericSignatureFormatError

我已将我们公司应用程序的 Java 版本从 8 更新到 17。在本地机器上,它在构建和运行时调用中都可以正常工作。同样在 GitHub 上,它与 Junit 测试执行一起部署得很好。

问题出在我在 Heroku 上部署应用程序之后。Heroku 构建成功,但在运行时,当我调用方法时,我收到此错误:

这与 java 反射方法和方法的签名有关。我的控制器休息方法返回一个 CompletableFuture 对象。CompletableFuture 有什么不好的地方…………

0 投票
1 回答
526 浏览

java - 由于 MultiReleaseException,jdeps 无法打印模块deps

我们有一个基于 JavaFX 的应用程序,它不是模块化的(有一些原因,涉及到一个遗留库),但我们使用jdepsand构建了一个自定义运行时jlink

我们最近重写了该应用程序并添加了一些新的依赖项,并删除了其他依赖项。现在正在构建应用程序的脚本在jdeps调用期间突然停止工作。

注意:这发生在 Linux 上——我还没有测试其他操作系统,但我预计不会有另一个结果。

当脚本调用

结果总是

关于这个特定的例外,我找不到太多,到目前为止我发现的一切都不适用于我们的情况。

为了不等待构建达到这一点,我让程序在执行之前打印出命令并在终端上使用它。然后它变得有点奇怪:

为什么突然我得到一个不同的例外?现在哪一个是正确的?我没有任何线索。
事实上,包含的jarorg.slf4j只有自动模块名称。

我真的不知道,我应该用很少的信息做什么......如果其他人可以指出某事,我会很高兴。

谢谢,丹尼尔

PS:以下代码打印命令并执行它:

他们似乎真的创造了不同的结果......

PPS:如果我删除--multi-release部分,我会得到一个不同的错误,即jackson多版本,但我需要指定我想要的......


编辑#1

在 pom 文件中,我们有以下 deps

产生以下 JAR 文件(减去我们自己的):

使用的 Java 版本是Bell Soft 的 Full Liberica JDK 17,我们使用了自 14 或 15 以来的所有最新版本,在重建 UI之前它运行良好。


编辑#2:

的结果

0 投票
2 回答
175 浏览

java - 即使它是关键字,使用`record`作为变量名是否合法?

record这让我感到意外:即使它现在已成为关键字,我也能够使用该名称声明一个变量。看看这个:

当使用 Java 17 编译和运行时,这会给出:

我曾预计这会导致错误,就像尝试声明名为class. 正如我认识的 Java 人一样,他们非常小心地不破坏现有代码,所以我认为这可能是一个深思熟虑的选择。

(你甚至不能声明一个名为的变量const,因为它const Java 中的一个关键字。)

0 投票
1 回答
122 浏览

java - 如何解决 java.lang.UnsupportedClassVersionError 错误?我在哪里可以找到正确的 JRE 版本?

我正在开发一个 Java 应用程序(一个 Spring Boot 应用程序)。在我的 Ubuntu 开发机器上,我使用了这个 JDK 版本:

这是我的 Spring Boot 应用程序的pom.xml文件:

我获得了.jar应用程序,并且在我的开发机器上运行它没有问题。

当我试图在生产机器上移动这个.jar文件时,问题就发生了。

这里的Java版本如下:

所以,如您所见,这里的 JAVA 版本似乎是1.8.0_311

运行我的应用程序,我收到此错误消息:

看来安装的JRE太旧了。我试图手动下载 JAVA 17 的 JRE 包,但我找不到它。

我要使用什么版本的 JRE?我在哪里可以下载这个 JRE 包版本?(不使用 yum 包管理器,我需要下载包含 JRE 的 tar 文件,然后将其解压缩到我的系统上)。

谢谢

0 投票
1 回答
154 浏览

java - 为什么这个异常在我的服务器上运行 Spring Boot\Batch 应用程序?java.lang.OutOfMemoryError:无法创建本机线程:

我正在开发 SpringBoot\Spring Batch 应用程序。我在我的开发机器上测试了它,我发现没有问题。它工作正常。当我尝试在生产机器上部署它时,问题就发生了。

首先我要说的是,我现在以这种简单的方式在这台 prod 机器上安装了 Oracle Java 17:我只从这里下载了 Oracle Java 17 SE的tar.gx版本: https ://www.oracle.com/ java/technologies/javase/jdk17-archive-downloads.html

我在这台 Linux Centos 7 机器上解压它,然后进入bin文件夹,我可以执行 java 命令:

我不确定它是否完全正确,但直到现在它似乎有效,因为我正在获取 Java 版本作为输出。

然后我尝试以这种方式执行我的 Spring Boot\Spring Batch 应用程序:

如您所见,我正在尝试执行我的 jar 文件,但我得到了这个异常:

所以,因为在我的开发机器上它工作正常(而且我使用的是我的开发机器的相同 Java 版本)我想它应该是一些 JVM 配置或类似的东西。但是什么?

我试图探索这里显示的内容:http: //www.mastertheboss.com/jbossas/monitoring/how-to-solve-javalangoutofmemoryerror-unable-to-create-new-native-thread/

但是我在这台机器上没有 root 访问权限,所以我不能执行很多检查。使用此 webadmin 用户为我提供输出的唯一检查是与当前正在运行的线程数相关的检查,这一项:

以及每个用户的进程数:

这是应该显示正在运行的进程数的命令:

我不知道这些最后的系统信息是否与这个特定问题有关。

为什么我得到这个错误?我可以尝试做些什么来解决这个问题?或者我有什么要请教处理这台服务器的系统工程师来改变?