问题标签 [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.
java - Java 模块系统:“提供”通用接口
我正在试验 Java 模块系统。我正在尝试将 ServiceLoader 用于通用接口。它有效,但我在模块信息中收到警告。这是我的最小代码
当我尝试时收到警告我并不感到惊讶
我知道通用擦除,我知道我必须使用注释或其他技巧来注释正确的服务。但是......根本没有提到我能找到的通用服务。我希望能够写出类似的东西
模块和加载程序在哪里合作以跟踪可用的通用版本..但是......什么都没有......没有任何人考虑过这种可能性......我错过了什么?
java - 为什么使用不同的 ArrayList 构造函数会导致内部数组的增长率不同?
我似乎在实现中偶然发现了一些ArrayList
我无法理解的有趣的东西。这是一些代码,说明了我的意思:
这个想法是,如果你创建一个ArrayList
这样的:
看看它会报告什么elementData
(所有元素都保存在哪里) 。因此,您添加了一个元素 - 您将获得 9 个未使用的额外插槽。Object[]
10
另一方面,如果您这样做:
您添加一个元素,保留的空间仅用于该元素,仅此而已。
在内部,这是通过两个字段实现的:
当你创建一个ArrayList
via 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
实现,桶的数量几乎总是比你要求的多;但是这样做是因为需要“两个的力量”桶,但这里的情况并非如此。
所以问题是 - 有人可以向我解释这种差异吗?
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 以启用对进一步非法反射访问操作的警告警告:所有非法访问操作将在未来版本中被拒绝
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 编译和运行。谢谢你嚎叫:-)
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 以来可用的类。
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