问题标签 [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.
java - 如何解决 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
我有一些使用 JAXB API 类的代码,这些类在 Java 6/7/8 中作为 JDK 的一部分提供。当我使用 Java 9 运行相同的代码时,在运行时出现错误,表明找不到 JAXB 类。
JAXB 类自 Java 6 起就作为 JDK 的一部分提供,那么为什么 Java 9 不再能找到这些类呢?
internationalization - 如何在 Java 9 中配置 ResourceBundle “无回退控制”
正如在如何忽略系统默认区域设置以检索资源包中所回答的那样,您可以在 Java 8 或更早版本中配置为不通过以下方式回退到默认区域设置:
在 Java 9 中,ResourceBundle.ControlUnsupportedOperationException
在命名模块中使用时会抛出一个错误:在命名模块ResourceBundle.Control
中不受支持。
如何实现/配置自定义“MyResourcesProvider[Impl]”以实现与ResourceBundle.Control.getNoFallbackControl
提供的相同行为?
java - 线程本地握手的解释
作为假定的JDK 10的一部分,提出了这个JEP 312:线程本地握手。
我试图掌握它的描述,但我仍然不确定我是否正确理解了这个想法。
它本质上是试图重新激活类似于已弃用的Thread.destroy()的东西吗?
这个界面理论上会是什么样子?
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 创建的启动配置(不工作)是这样的:
有效的是:
java - 使用 Java 9 JDK 定位 Java 6 会发出警告
我正在尝试使用 JDK 9 构建一个项目,因为使用--release
javac 的参数意味着它可以为旧版本构建,而无需安装相应的 JDK/JRE。我需要支持 Java 6,所以我预先存在的设置需要 Java 6 用于 bootstrapClasspath,另外需要 JDK 8 或 9 用于 gradle 和 IDE。我想取消 JDK 6,而只使用 9,并稍微整理一下构建。
我的新 build.gradle 具有以下配置:
,和选项没有设置,因为我知道sourceCompatibility
参数现在处理这个。targetCompatibility
bootstrapClasspath
--release
我收到以下警告:
我知道这些可以被压制(它在那里说),但我没想到会看到它们。使用--release [7-9]
这些警告构建时不存在。
对于上下文,这是旧的(现在未使用)“2x JDK”配置:
我是否错误地设置了编译器参数?有没有办法不设置/取消设置source
和target
?
java - Java 9 是否包含 Graal?
我正在阅读JEP 317。它说 Graal(一个新的实验性的基于 Java 的 JIT 编译器)将成为 JDK 10 的一部分,但是它说它已经在 JDK 9 中可用。那么,JEP 317 的意义何在?Java 9 是否包含 Graal?
java - Java 10:Java 7 的 Diamond 推理能否与本地类型推理一起使用?
从JEP 286中,我们看到我们将能够var
在 JDK 10 (18.3) 中利用本地类型推断 ()。JEP 声明以下编译,这是预期的:
我很想知道如果我们尝试以下操作会发生什么:
我在第二个片段中提出的建议甚至可以编译吗?如果是这样(我怀疑),会ArrayList
接受Object
它的泛型类型吗?
我会自己尝试,但我无法访问任何可以安装早期版本的机器。
谢谢!
java - 本地类型推断与实例
我试图扫描JEP-286关于本地类型推断。我看到这仅适用于局部变量 - 理解。所以这确实有效:
另一方面,我确实看到这无法编译:
很明显它没有,因为 JEP 是这么说的。现在我的问题:
对于宣布失败的公共/受保护var
成员(至少 IMO)来说,这是完全合理的。但是为什么即使它是它也不能编译private
?我只能假设您仍然可以通过反射获得该变量(并且我无法获得这样的本地字段)......并且获得该变量将需要一个演员,好吧,可能是一个非常混乱的演员。
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
java - List#copyOf、Set#copyOf 和 Map#copyOf 与传统方法的区别是什么?
Java 10 的发布带来了新的静态工厂方法,具体来说:
static <E> List<E> copyOf(Collection<? extends E> coll)
static <E> Set<E> copyOf(Collection<? extends E> coll)
static <K,V> Map<K,V> copyOf(Map<? extends K,? extends V> map)
鉴于这些方法允许我们将Collection
s 复制到不同的Collection
实现中,它们如何与现有方法进行比较和对比?