Tag: java 10

为什么Oracle JDK 9下载这么早就结束了?

我想在我的机器上安装JDK 9,访问JDK官方下载页面,很惊讶地看到, Java SE 9已经到了支持终点。 Java SE 9的用户应切换到Java SE 10.请访问我们的Java SE下载页面以获取当前版本的Java SE。 您将在……秒内重定向到Java SE下载页面。 请将书签更新为Java SE下载页面。 我做了一些谷歌搜索和Java发布历史等。但找不到任何具体的原因。 我有几个问题 – Oracle仍在支持JDK 1.8,但是停止向JDK 9发布更新,为什么? 我应该继续使用JDK 1.8一段时间,然后直接切换到JDK 10吗?

无法在Javadoc注释中链接到JDK10

从Java 9升级到10后,使用Javadoc工具生成文档时,指向JDK的链接不再有效(例如,对于导入java.util.Optional的文件, {@link Optional}呈现为Optional而不是Optional ;同样的问题与@return see, @return @param , @return以及其他任何你通常看到Javadoc链接的地方)。 我有一个简单的模块化项目,我正在使用Maven和Javadoc插件(在编译器插件的configuration部分中将source和target选项设置为10 )。 我的理解是默认情况下它将-link https://docs.oracle.com/javase/10/docs/api/传递给Javadoc工具。 这也是我的理解,从历史上看,Javadoc工具期望一个名为package-list的文本文件出现在它被告知要查找外部文档的URL中。 Java 8 有一个 。 Java 9 有一个 。 Java 10 没有 (404错误)。 显然,Javadoc工具现在为模块化项目输出一个名为element-list而不是package-list的文本文件,但似乎也没有提供 (Java9也没有提供 ,但它可用于早期访问的Java构建11 )。 通过IntelliJ生成Javadoc,并启用了启用Link to JDK documentation的选项Link to JDK documentation可以产生相同的结果。 它说传递-link https://docs.oracle.com/javase/10/docs/api/到javadoc.exe ,它报告javadoc: error – Error fetching URL: https://docs.oracle.com/javase/10/docs/api/ 。 尽管有错误,它确实输出了Javadoc,但与Maven一样,没有JDK链接。 这应该怎么样? 当他们将JDK文档放到网上时,Oracle是否搞砸了? 我的pom.xml的相关部分: org.apache.maven.plugins maven-compiler-plugin 3.7.0 […]

线程主java.lang.exceptionininitializerError中的exception当没有hadoop安装spark时

我正在尝试安装spark2.3.0,更具体地说,它是spark-2.3.0-bin-hadoppo2.7 ‘D:\ spark \ bin’已添加到环境变量PATH中。 同时,安装了JDK-10。 没有安装Hadoop。 但是google说火花可以在没有hadoop的情况下工作。 这是错误消息 C:\Users\a>spark-shell Exception in thread “main” java.lang.ExceptionInInitializerError at org.apache.hadoop.util.StringUtils.(StringUtils.java:80) at org.apache.hadoop.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.java:611) at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:273) at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:261) at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:791) at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:761) at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:634) at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2464) at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2464) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2464) at org.apache.spark.SecurityManager.(SecurityManager.scala:222) at org.apache.spark.deploy.SparkSubmit$.secMgr$lzycompute$1(SparkSubmit.scala:393) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$secMgr$1(SparkSubmit.scala:393) at org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$7.apply(SparkSubmit.scala:401) at org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$7.apply(SparkSubmit.scala:401) at scala.Option.map(Option.scala:146) at org.apache.spark.deploy.SparkSubmit$.prepareSubmitEnvironment(SparkSubmit.scala:400) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:170) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:136) […]

在JDK 10中为类文件生成JNI头文件

Java Native Interface(JNI)的一个组成部分是通过C头桥接JVM代码和本机代码。 生成这些头文件的方法过去非常简单:只需在类文件上调用命令行实用程序javah 。 然后,此过程将为使用native修饰符标记的任何方法生成原型。 但是,从Java 10开始, javah实用程序已被删除 ,其建议的替换是javac的新标志“-h”。 如果有可用的Java源文件,则替换工作正常,但是只有编译的类文件可用时才会出现问题。 (引发这个问题的问题是我正在尝试从Scala源生成JNI绑定。我当前的方法是首先编译它们然后在生成的类文件上运行javah。) 在只有编译的类文件可用的情况下,有没有办法生成C头文件,类似于javah习惯的方式?

“数组初始化程序需要一个明确的目标类型” – 为什么?

遵循JEP 286:局部变量类型推断描述 我想知道,引入这种限制的原因是什么,如: Main.java:199: error: cannot infer type for local variable k var k = { 1 , 2 }; ^ (array initializer needs an explicit target-type) 所以对我来说逻辑上它应该是: var k = {1, 2}; // Infers int[] var l = {1, 2L, 3}; // Infers long[] 因为Java编译器已经可以正确地推断出数组的类型: void decide() { arr(1, 2, 3); // call void […]

可以将具有推断类型的局部变量重新分配给其他类型吗?

我记得在某处读过带有推断类型的局部变量可以用相同类型的值重新分配,这是有意义的。 var x = 5; x = 1; // Should compile, no? 但是,我很好奇如果你要将x重新分配给不同类型的对象会发生什么。 这样的东西还会编译吗? var x = 5; x = new Scanner(System.in); // What happens? 我目前无法安装JDK 10的早期版本,并且不想等到明天才发现。

无法在macOs上启动Jenkins – Java 10

我正在尝试使用以下方式启动Jenkins: java -jar jenkins.war 我收到了这个错误: java.lang.UnsupportedClassVersionError: 54.0 at Main.main(Main.java:128) 在更新我的开发环境之后出现此问题,我已切换到: Java 10.0.1 + 10 jenkins2.107.2 MacOS 10.13.4

为什么直接将Arrays.asList()分配给var时会出现AssertionError?

我试图理解Java 10中的局部变量类型推断 。 下面的代码在编译和运行时完美运行: List list1 = Arrays.asList(1L, 2.0F, “3”); var list2 = list1; 但是,此行会引发编译错误: var list3 = Arrays.asList(1L, 2.0F, “3”); Error:java: java.lang.AssertionError: Unexpected intersection type: java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable> 我真的不明白为什么第二种情况是错误的但不是第一种情况。 因为我希望编译器可以推断出list1的类型,并且对list2和list3进行相同的处理。 提前致谢。

局部变量的Java 10类型推断可以推断出无效吗?

使用Java 10,我们可以使用类型推断。 String s1 = “hello”; // before Java 10 var s2 = “hello”; // now 但是,有一件事我们以前做不到:有类型为void的变量。 因此,在以前的版本中,我们根本无法定义变量类型void 。 但是现在我们可以将返回void的方法的结果赋给变量: void emptyMethod() { } … void v1 = emptyMethod(); // won’t compile var v2 = emptyMethod(); // no problem at all 问题是 – 它为什么甚至编译,它的目的是什么? 你有这个奇怪的用例吗? void类型的变量没有方法,它甚至不能用作方法的参数。

Java 9是否包含Graal?

我正在读JEP 317 。 它说Graal(一个新的基于Java的实验性JIT编译器)将成为JDK 10的一部分,但后来它说已经可以在JDK 9中使用了。那么,JEP 317的重点是什么呢? Java 9是否包含Graal?