问题标签 [java-10]

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 投票
40 回答
1002977 浏览

java - 如何解决 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

我有一些使用 JAXB API 类的代码,这些类在 Java 6/7/8 中作为 JDK 的一部分提供。当我使用 Java 9 运行相同的代码时,在运行时出现错误,表明找不到 JAXB 类。

JAXB 类自 Java 6 起就作为 JDK 的一部分提供,那么为什么 Java 9 不再能找到这些类呢?

0 投票
1 回答
842 浏览

internationalization - 如何在 Java 9 中配置 ResourceBundle “无回退控制”

正如在如何忽略系统默认区域设置以检索资源包中所回答的那样,您可以在 Java 8 或更早版本中配置为不通过以下方式回退到默认区域设置:

在 Java 9 中,ResourceBundle.ControlUnsupportedOperationException在命名模块中使用时会抛出一个错误:在命名模块ResourceBundle.Control不受支持

如何实现/配置自定义“MyResourcesProvider[Impl]”以实现与ResourceBundle.Control.getNoFallbackControl提供的相同行为?

0 投票
1 回答
4107 浏览

java - 线程本地握手的解释

作为假定的JDK 10的一部分,提出了这个JEP 312:线程本地握手

我试图掌握它的描述,但我仍然不确定我是否正确理解了这个想法。

它本质上是试图重新激活类似于已弃用的Thread.destroy()的东西吗?

这个界面理论上会是什么样子?

0 投票
2 回答
1394 浏览

eclipse - 如何在 Eclipse 中运行 Java 9 主类而不编辑启动配置?

我在运行 Java 9.0.1 的 Eclipse Oxygen.1a Release (4.7.1a) 的 Maven 项目中创建了一个简单的 Hello World 主类和一个 module-info.java 文件。

当我尝试通过右键单击启动主类 - 作为 Java 应用程序运行时,出现错误:

启动层初始化时出错
java.lang.module.FindException: Module com.github.gv2011.quarry.modules.moda not found

我可以从 target/classes 目录的命令行成功运行它:

如果我手动编辑创建的启动配置并添加 VM 参数

它也有效。

有没有一种更舒适的方式来从 Eclipse 启动主类而无需手动启动配置编辑?

主类:

模块-java:

相关问题:Eclipse - 添加 module-info.java 时找不到模块

Eclipse 创建的启动配置(不工作)是这样的:

有效的是:

0 投票
1 回答
259 浏览

java - 使用 Java 9 JDK 定位 Java 6 会发出警告

我正在尝试使用 JDK 9 构建一个项目,因为使用--releasejavac 的参数意味着它可以为旧版本构建,而无需安装相应的 JDK/JRE。我需要支持 Java 6,所以我预先存在的设置需要 Java 6 用于 bootstrapClasspath,另外需要 JDK 8 或 9 用于 gradle 和 IDE。我想取消 JDK 6,而只使用 9,并稍微整理一下构建。

我的新 build.gradle 具有以下配置:

,和选项没有设置,因为我知道sourceCompatibility参数现在处理这个。targetCompatibilitybootstrapClasspath--release

我收到以下警告:

我知道这些可以被压制(它在那里说),但我没想到会看到它们。使用--release [7-9]这些警告构建时不存在。

对于上下文,这是旧的(现在未使用)“2x JDK”配置:

我是否错误地设置了编译器参数?有没有办法不设置/取消设置sourcetarget

0 投票
2 回答
2765 浏览

java - Java 9 是否包含 Graal?

我正在阅读JEP 317。它说 Graal(一个新的实验性的基于 Java 的 JIT 编译器)将成为 JDK 10 的一部分,但是它说它已经在 J​​DK 9 中可用。那么,JEP 317 的意义何在?Java 9 是否包含 Graal?

0 投票
3 回答
2088 浏览

java - Java 10:Java 7 的 Diamond 推理能否与本地类型推理一起使用?

JEP 286中,我们看到我们将能够var在 JDK 10 (18.3) 中利用本地类型推断 ()。JEP 声明以下编译,这是预期的:

我很想知道如果我们尝试以下操作会发生什么:

我在第二个片段中提出的建议甚至可以编译吗?如果是这样(我怀疑),会ArrayList接受Object它的泛型类型吗?

我会自己尝试,但我无法访问任何可以安装早期版本的机器。

谢谢!

0 投票
5 回答
486 浏览

java - 本地类型推断与实例

我试图扫描JEP-286关于本地类型推断。我看到这仅适用于局部变量 - 理解。所以这确实有效:

另一方面,我确实看到这无法编译:

很明显它没有,因为 JEP 是这么说的。现在我的问题:

对于宣布失败的公共/受保护var成员(至少 IMO)来说,这是完全合理的。但是为什么即使它是它也不能编译private?我只能假设您仍然可以通过反射获得该变量(并且我无法获得这样的本地字段)......并且获得该变量将需要一个演员,好吧,可能是一个非常混乱的演员。

0 投票
2 回答
2013 浏览

java - Java 10 中的“var”到底是什么类型的令牌?

在上一期 Heinz Kabutz 的时事通讯#255 Java 10: Inferred Local Variables中,表明它var不是 Java 10 中的保留字,因为您也可以将var其用作标识符:

但是,您不能使用 ieassert作为标识符,如var assert = 2,因为assert是保留字。

正如链接的时事通讯中所说,var不是保留字的事实是个好消息,因为这允许来自以前版本的 Java 的var用作标识符的代码在 Java 10 中编译而不会出现问题。

那么,那var又是什么呢?它既不是显式类型也不是语言的保留字,因此它可以作为标识符,但是在 Java 10 中用于声明局部变量时它确实具有特殊含义。我们在上下文中究竟如何称呼它局部变量声明?

此外,除了支持向后兼容性(通过允许包含作为标识符的旧代码进行编译)之外,作为保留字var还有其他优点吗?var

0 投票
1 回答
1253 浏览

java - List#copyOf、Set#copyOf 和 Map#copyOf 与传统方法的区别是什么?

Java 10 的发布带来了新的静态工厂方法,具体来说:

鉴于这些方法允许我们将Collections 复制到不同的Collection实现中,它们如何与现有方法进行比较和对比?