问题标签 [java-12]

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 回答
297 浏览

java - Java 模块系统:“提供”通用接口

我正在试验 Java 模块系统。我正在尝试将 ServiceLoader 用于通用接口。它有效,但我在模块信息中收到警告。这是我的最小代码

当我尝试时收到警告我并不感到惊讶

我知道通用擦除,我知道我必须使用注释或其他技巧来注释正确的服务。但是......根本没有提到我能找到的通用服务。我希望能够写出类似的东西

模块和加载程序在哪里合作以跟踪可用的通用版本..但是......什么都没有......没有任何人考虑过这种可能性......我错过了什么?

0 投票
6 回答
1134 浏览

java - 为什么使用不同的 ArrayList 构造函数会导致内部数组的增长率不同?

我似乎在实现中偶然发现了一些ArrayList我无法理解的有趣的东西。这是一些代码,说明了我的意思:

这个想法是,如果你创建一个ArrayList这样的:

看看它会报告什么elementData(所有元素都保存在哪里) 。因此,您添加了一个元素 - 您将获得 9 个未使用的额外插槽。Object[]10

另一方面,如果您这样做:

您添加一个元素,保留的空间仅用于该元素,仅此而已。

在内部,这是通过两个字段实现的:


当你创建一个ArrayListvia new ArrayList(0)-EMPTY_ELEMENTDATA时将被使用。

当你创建一个ArrayList通过new Arraylist()-DEFAULTCAPACITY_EMPTY_ELEMENTDATA使用。

我内心最直观的部分——简单地尖叫“删除DEFAULTCAPACITY_EMPTY_ELEMENTDATA”,让所有的案件都处理EMPTY_ELEMENTDATA;当然是代码注释:

我们将此与 EMPTY_ELEMENTDATA 区分开来,以了解添加第一个元素时要膨胀多少

确实有道理,但是为什么一个膨胀到10(比我要求的要多得多)而另一个膨胀到1(完全符合我的要求)。


即使您使用List<String> zeroConstructorList = new ArrayList<>(0)并不断添加元素,最终您也会达到elementData比请求更大的点:

但是它的增长速度小于默认构造函数的情况。


这让我想起了HashMap实现,桶的数量几乎总是比你要求的多;但是这样做是因为需要“两个的力量”桶,但这里的情况并非如此。

所以问题是 - 有人可以向我解释这种差异吗?

0 投票
0 回答
716 浏览

java - 尝试运行 hello world 程序时在 Kotlin 中发生非法反射访问操作

我正在尝试使用 IntelliJ 运行 Kotlin,如果不进行非法反射访问操作,我将无法运行任何东西。甚至没有一个hello world程序。

我试过检查 Kotlin 的更新

我运行的代码如下。错误发生在有和没有包的情况下。

我得到错误

警告:发生了非法反射访问操作警告:com.intellij.openapi.util.JDOMUtil$2 的非法反射访问(文件:/Users/will.rogers/Library/Application%20Support/IntelliJIdea2019.1/Kotlin/kotlinc/lib /kotlin-compiler.jar) 到构造函数 com.sun.xml.internal.stream.XMLInputFactoryImpl() 警告:请考虑将此报告给 com.intellij.openapi.util.JDOMUtil$2 的维护者 警告:使用 --illegal-access =warn 以启用对进一步非法反射访问操作的警告警告:所有非法访问操作将在未来版本中被拒绝

0 投票
0 回答
862 浏览

java - 如何使用 Eclipse 环境编译 Java 11 程序?

我有一个使用 XML 解析的 Java 程序,因此它使用了许多库,例如:

当我使用 Java 1.8 时,它可以编译并工作。javac它使用来自 OpenJDK 12 的命令行编译器进行编译:

但是当我在 Eclipse 中将“编译器合规级别”从 1.8 更改为 11 时,我遇到了一些问题。然后 Eclipse 显示了很多错误,例如:

我的 Eclipse 版本:

编辑

我将 Eclipse 更新为:

错误是一样的。在编译时:

在运行时:

我可以使用命令行 JDK12 javac/java 编译和运行这个程序。

我的问题与Eclipse Java 编辑器突出显示错误但代码编译不同,因为我可以在“问题”选项卡中看到问题并且我无法从 Eclipse 运行程序。

在 Eclipse 中使用 Java11/12 编译我的程序应该怎么做?

解决方案

xml-apis-1.3.04.jar从我的CLASSPATH程序中删除并从 Eclipse 编译和运行。谢谢你嚎叫:-)

0 投票
2 回答
562 浏览

java - jdk版本如何决定——Oracle发布周期更短

我对 Oracle 新的短发布周期范式感到困惑。这是一个包含支持日期的表格: 在此处输入图像描述

Java 8 的支持窗口比以下大多数 Jdk 都要大。Java 9 现在应该停止支持,Java 10 也是如此。

决定 jdk 版本成为一项不平凡的任务。

Oracle 推出了 Long therm 支持版本的 therm。这对非 LTS 版本意味着什么?它们与次要版本相似吗?

0 投票
1 回答
1674 浏览

java - 在封闭的 switch 表达式之外返回

我在 Java 12 中使用 switch 表达式¹将字符串转换为HTTP 方法

我想警告默认分支中不受支持的方法并返回 null(然后将其包装在 Optional 中)。

但是上面的代码会导致编译器错误:

在封闭的 switch 表达式之外返回

我如何让它编译?


为了完整起见,这里是RequestMethod枚举的定义:

¹开关表达式是在 Java 12 中作为预览功能引入的。

0 投票
1 回答
1849 浏览

java - 如何解决 Java 中的“模块 javafx.graphics 不会“打开 com.sun.javafx.text”到未命名模块”问题?

我在用

日食ide。当我运行我的代码时,它应该创建一个窗格、一个文本字段和一些按钮。它只是创建窗格然后我得到一个错误

我尝试使用

得到了同样的错误

我把这些写给

据:

这是我的主要课程

我收到了这个错误

0 投票
0 回答
625 浏览

apache-karaf - Apache Karaf 4.2.6 和 Java 12 的 BundleException

使用 JDK 11 或 12 启动的 Apache Karaf 4.2.6 在启动和停止时会引发异常。我至少需要 JDK 11,因为我有一个使用 JDK 11 编写的应用程序,使用Websocket自 JDK 11 以来可用的类。

0 投票
2 回答
4379 浏览

java - 如何在 Android 项目中使用 JDK 12

我正在运行 Android Studio 3.5 Beta 5。我一直在跟踪一个兔子洞,开始尝试使用 Robolectric 针对 Android SDK 29 运行单元测试。我看到一个需要使用 Java 9 运行的错误。当我去安装 JDK 9 时,它指示我到 10,然后是 11,然后是 12!

我下载了 JDK 12,现在我想将 Android Studio 的 JDK 位置配置为 12。但是,当我尝试这样做时,我收到以下警告消息:“请选择有效的 JDK 8 目录”。请参阅下面的屏幕截图。

是否必须更改其他设置才能获得此对话框以允许我选择大于 8 的 JDK?还是只是不可能?

项目结构对话框

警告信息

0 投票
0 回答
698 浏览

java - Tomcat 服务器错误消息 - 目标资源的当前表示或不愿意透露该资源的存在

crud.war 被复制到 tomcat webapps 文件夹,我已经启动了 tomcat 服务器。我已经从 SOAPUI 执行了 rest 命令。它正在运行 Java 1.8 和 Tomcat Server 8.0.52 版本,但它没有运行其他配置了 Java 12 和 Tomcat Server 9.0.22 版本的机器。它在运行不同的 java 和 tomcat 版本时显示不同的错误消息。请让我知道为什么它不在 Java 12 和 Tomcat Server 9.0.22 版本中运行?

Java 12 和 Tomcat Server 9.0.22 的错误消息

“源服务器没有找到目标资源的当前表示或不愿意透露存在的表示”

Java 1.8 和 Tomcat 服务器 8.0.52 的错误消息

“请求的资源不可用。”

Java 12 和 Tomcat 9:错误消息 HTTP 状态 404 – 未找到类型状态报告消息 /crud/ 描述 源服务器没有找到目标资源的当前表示或不愿意透露存在的表示。Apache Tomcat/9.0.22


Java 8 和 Tomcat 8:错误消息 HTTP 状态 404 - /crud/ type 状态报告消息 /crud/ 描述 请求的资源不可用。Apache Tomcat/8.0.52