问题标签 [java-9]
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 9 选项 --add-exports 与 -XaddExports 无法识别
我下载了最新的 jdk9 版本:
当我执行
我看到了这个选项:
但是当我尝试使用这个选项时:
我得到:
-XaddExports
我在一些帖子中看到的相同。
我在这里做错了什么?
我需要一个特殊的拼图 jdk9 发行版吗?老实说,我对不同的 jdk9 版本有点困惑;)
java - 为什么我不能导入 sun 包?
我从https://jdk9.java.net下载了 java 9并将其安装在我的 Windows 10 机器上。
Java 9 有 jshell,我可以用它来评估和学习 java 编程。
一些例子导入sun包,比如sun.audio.*
etc。但是,在jshell中,每次我尝试导入任何sun包时,它都会说sun包不存在。
某些应用程序不适用于 java 9。也许存在不兼容性?
java - Java 9 整数到字符串转换
我刚刚阅读了有关此 Java 9 功能的信息https://bugs.openjdk.java.net/browse/JDK-8085796说使用 StringBuilder 的“慢”字符串连接将得到改进。
所以我的问题是,以下列方式对 String 进行 int 转换是否还有任何缺点?
Integer.toString(i)
或者使用or将 int 转换为 String 有什么优点/缺点String.valueOf(i)
?
编辑:由于我的问题过于基于意见(对此很抱歉),我改变了它。我对不同铸件的积极或消极方面感兴趣。每个人都应该自己决定使用哪一个。
java - sun.misc.Service 的替换类
我有一些依赖于sun.misc.Service
API 的旧(Java 6 之前)代码,例如:
这个类在 Java 9 中被删除(不仅仅是内部化)。
我可以使用哪些备用 Java SE API?
java - 错误:java:无效标志:-release
我使用Java:
和IntelliJ IDEA:
编译时出现错误:
执行javac -help
:
所以javac
应该使用两个连字符和release,但 Intellij Idea 使用一个。
我可以覆盖javac
IDEA 使用的选项或以某种方式修复它吗?
UPD:在这种情况下,即使构建、执行、部署 > 编译器 > Java 编译器附加命令行参数也无济于事
java - “打开”模块的 JDK 编译器失败
使用当前 JDKbuild 9-ea+143
的javax.tools.JavaCompiler
工具,我可以编译简单(空)示例模块而不会出现错误:
如果我添加open
如下:
...编译器错误显示:
语法基于http://cr.openjdk.java.net/~mr/jigsaw/spec/lang-vm.html
当前的 JDK 9 版本是否与此规范不是最新的,还是我缺少要传递给的选项JavaCompiler
?
java - 使用 Maven 构建具有非模块化依赖项的 JDK 9 项目需要什么
我有一个简单的 Java 9 SE 项目,它依赖于一个非模块化项目(本示例选择 Weld SE),我正在尝试使用 Maven ( clean install
) 构建它。为了让 Java 9 启动,我添加了module-info.java
. 最初,这个文件只包含模块名称,没有requires
公式。
请记住,我唯一的依赖项不是模块化项目,因此我假设 Maven 将放入类路径(而不是模块路径),因此它将以模块化系统状态中所述的方式unnamed module
结束。
现在,我的 Maven 版本是 3.3.9,我知道我需要在 3.6 版本中使用 Maven 编译器插件,如此处所述当然我已经下载了 JDK 9 EA build with jigsaw 并设置 Maven 使用它。
如果我在没有 的情况下构建我的项目module-info.java
,一切正常,东西被添加到类路径并构建成功。我想 Maven 只是坚持使用旧方法,只要您忽略该文件。
但是用 module-info.java
它构建它告诉我在类路径中找不到我的依赖项中的类。所以我在调试模式下(使用-X)运行了 Maven,并且确实 -所有 jar 都在 module-path 下并且 classpath 是 empty。这实际上意味着我的所有依赖项都转移到了自动模块中,我需要在module-info.java
.
一旦我声明了自动模块要求(链接到项目的module-info
),我就可以在 JDK 9 上构建它。但这有点乱——我唯一的pom.xml
依赖是 on weld-se-core
,但我module-info
要求我声明更多的要求才能通过编译。
这是一个可以观察到所有这些的整个GitHub 项目。
所以我的问题是:
- 如果我知道它们不是模块化的,我可以告诉 Maven 将一些工件放在类路径上吗?这样我就可以避免
automatic module
和需要声明它们? - 如果我坚持使用
automatic module
,我可以告诉 Maven 以某种方式传递地允许我的依赖项需要引入的任何东西吗?例如 Weld 的其他部分、CDI API 等。 - 实际原因是什么,为什么我需要说明我的项目
requires
模块,我不直接使用?例如weld.environment.common
java - 无法创建 Eclipse 工作区
今天我下载了 Eclipse Neon。当我第一次运行它时,它要求我选择一个文件夹作为我的工作区。执行此操作后,它会抛出一个错误,将我重定向到我选择保存工作区的文件夹中的日志文件:
对不起,很长的帖子。有任何想法吗?
java - Gradle 不支持 JDK9 中的 --add-modules jvm 参数
我正在尝试 JDK9 (9-ea+143),需要设置--add-modules java.xml.bind
. 我努力了:
- 环境
GRADLE_OPTS="--add-modules java.xml.bind '-Dorg.gradle.jvmargs=--add-modules java.xml.bind'"
org.gradle.jvmargs=--add-modules java.xml.bind
在 gradle.properties 中设置。- 添加
test { jvmArgs '--add-modules java.xml.bind' }
到 build.gradle - 添加
tasks.withType(Test) { jvmArgs '--add-modules java.xml.bind' }
到 build.gradle - 添加
tasks.withType(JavaExec) { jvmArgs '--add-modules java.xml.bind' }
到 build.gradle
测试仍然失败。我错过了什么?
我在https://github.com/henrik242/gradle-jdk9-test-problem有一个示例项目
ant - 在 Ant 中使用 Java 9 模块系统
我对 Ant 和 Java 9 模块系统都很陌生,所以请多多包涵。我正在将一个现有的 Ant 项目移植到使用 Java 9 上,随之而来的是模块的使用。
特别是,现在我有 2 个不同的模块,一个需要另一个模块,如下所示:
在构建期间baz
,我收到一个错误:module not found: org.bar.foo
。
在查看了一些示例之后,我尝试--module-path
在构建文件中通过编译器 arg设置baz
,但到目前为止我还没有运气。我不太确定在指定模块路径时我能有多具体/通用。