标签: java-9

目标不是JDK根.找不到系统库.Eclipse Oxygen 4.7 + Java9错误

我正在尝试使用Eclipse Oxygen IDE测试JDK9(jdk-9-ea + 147版本).

我已经安装了jdk和jre.来自Eclipse Market Place我已经安装了Java9 Beta扩展:

在此输入图像描述

问题是,当我尝试从Eclipse添加新安装的jre时,我收到以下错误:

在此输入图像描述

有趣的是,以前的JDK版本的安装不会发生此错误:

在此输入图像描述

是否有人遇到Eclipse Oxygen的simillar问题?任何反馈都表示赞赏.

java eclipse java-9 eclipse-oxygen

16
推荐指数
4
解决办法
3万
查看次数

jshell中的多行粘贴

我正在尝试使用jshell,但找不到粘贴多行表达式的选项.甚至可以在jshell中粘贴多行.与scala提供的类似paste mode.

java java-9 jshell

15
推荐指数
3
解决办法
1505
查看次数

为什么不允许导出整个模块?

在Java 9的模块声明中有2个结构:

exports com.foo;
Run Code Online (Sandbox Code Playgroud)

opens com.foo;
Run Code Online (Sandbox Code Playgroud)

exports赠款编译时访问,同时opens允许运行时访问,如反射和资源.

opens有一个宽容exports,你可以将整个模块定义为open,结果与显式打开每个包相同:

open module com.mod {
Run Code Online (Sandbox Code Playgroud)

但是没有相似的结构

exported module com.mod {
Run Code Online (Sandbox Code Playgroud)

我的问题:为什么会这样; 有什么决定允许一次打开整个模块而不是出口?

java java-platform-module-system java-9 java-module module-info

15
推荐指数
1
解决办法
758
查看次数

Java9中的Synthetic和Mandated Modifier有什么区别

java doc中的ModifierforExports表明了这一点

MANDATED 导出在模块声明的源中隐式声明.

SYNTHETIC 未在模块声明的源中显式或隐式声明导出.

看几个module-info.classes,我可以看到通常有两种类型的用法:

module java.base {
    ...
    exports java.util; // type 1
    exports java.util.concurrent;
    exports java.util.concurrent.atomic;
    exports jdk.internal to jdk.jfr; // type 2
    exports jdk.internal.jmod to
        jdk.compiler,
        jdk.jlink;
    ...
}
Run Code Online (Sandbox Code Playgroud)

合格的出口做介绍这两种,但没有对枚举类型没有提及.这些是文档中提到的不同类型吗?

Q1.一般来说SYNTHETICMANDATED作为在使用调节剂Exports,ModuleDescriptor,OpensRequires.这两者之间的区别是什么,在实践中优于另一个?

Q2.Synthetic Modifier如果没有在模块的源代码中声明,那么无论如何都是一个例子?

java java-9 java-module module-info

15
推荐指数
1
解决办法
698
查看次数

如何解压缩文件jre-9/lib/modules?

JRE-9/lib目录中(至少在Windows上),有一个新文件,modules其大小约为107 MB.是否可以提取该文件或列出其中的Java模块?

我可以看到一个名为的新工具jmod可用jdk-9/bin/jmod.exe,但是用于读取.jmod位于的文件,jdk-9/jmods它无法读取文件modules.

java jdk-tools java-9 java-module jmod

15
推荐指数
4
解决办法
3403
查看次数

WEB-INF/lib目录与Java 9模块

Web应用程序的WEB-Inf/lib目录用于jar文件,servlet容器(例如Tomcat)自动进入应用程序的类路径.对于Java 9的模块化jar,这个机制是如何工作的(或者应该在将来工作)有什么想法吗?这些提供模块,用户必须指定应用程序应使用哪些包含/导出的模块/包.(旧)类路径还有一个模块路径.

模块化的jar是否在没有任何进一步的规范/配置的情况下工作,以便所有导出或包含的模块都在类路径上?

Java EE 8和Tomcat 9已发布.这两个项目都声称支持Java 9.因此,应该有一种方法以符合模块理念的方式使用Java 9模块.

java tomcat java-ee java-9

15
推荐指数
1
解决办法
1057
查看次数

如何将参数传递给jshell脚本?

我愿意将参数传递给jshell脚本.例如,我会喜欢这样的事情:

jshell myscript.jsh "some text"
Run Code Online (Sandbox Code Playgroud)

然后在脚本中的某个变量中提供字符串"some text".

但是,jshell只需要一个文件列表,因此答案是:

File 'some text' for 'jshell' is not found.
Run Code Online (Sandbox Code Playgroud)

有没有办法将参数正确传递给jshell脚本?

迄今为止的解决方法

到目前为止,我唯一的解决方案是在调用脚本时使用环境变量:

ARG="some test" jshell myscript.jsh
Run Code Online (Sandbox Code Playgroud)

然后我可以在脚本中访问它:

System.getenv().get("ARG")
Run Code Online (Sandbox Code Playgroud)

java-9 jshell

15
推荐指数
1
解决办法
956
查看次数

Java 9:Eclipse中无法访问模块java.xml.bind

我将Java 8中的maven项目迁移到Java 9项目而没有任何构建工具Eclipse OxyGen 1a.

所以我的module-info.java看起来像这样:

在此输入图像描述

但java.xml.bind不可访问,虽然它在我的模块路径中:

在此输入图像描述

那么这里有什么问题?

java eclipse java-9 java-module

15
推荐指数
1
解决办法
2万
查看次数

如何使用Gradle制作多版本JAR文件?

Java9引入了Multi-Release JAR.

假设我使用java8有多模块Gradle项目:

project-root
      settings.gradle
      build.gradle 
      /module1
          /src
          ... (common maven structure)
      /module2
      /module3
Run Code Online (Sandbox Code Playgroud)

这是Gradle中常见的多模块项目.假设我需要MR-Jar module1.

我无法添加module1-java9定位Java9,因为基础是8 - 到目前为止,我的Gradle和IntelliJ IDEA都抱怨.Gradle是用java8编译的,但是我需要为模块启用java9运行时(不知道怎么做); 在IntelliJ IDEA中我可以为模块设置java9运行时,但每次重新加载gradle配置时它都会被覆盖.

而且,即使我以某种方式添加它,我需要指示module11)构建第二个和2)包括module1-java9.以下是这种情况的图纸:

project-root
      settings.gradle
      build.gradle 
      /module1
      /module1-java9  (added java9 module)
      /module2
      ...
Run Code Online (Sandbox Code Playgroud)

或者,这可以在module1具有不同来源的情况下完成:srcsrc-java9.但我怀疑这会被接受.这是一张图:

project-root
      settings.gradle
      build.gradle 
      /module1
          /src
          /src-java9 (added java9 source folder)
      /module2
      /module3
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只看到它module1-java9是一个单独的项目(不是模块),module1只是在那里调用gradle并获取输​​出.是的,这是gradle调用gradle :)))

有没有开发人员友好的方式来做到这一点?

java gradle java-9 java-module

15
推荐指数
1
解决办法
560
查看次数

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

我想在我的机器上安装JDK 9,访问JDK官方下载页面,很惊讶地看到,

Java SE 9已经到了支持终点.Java SE 9的用户应切换到Java SE 10.请访问我们的Java SE下载页面以获取当前版本的Java SE.您将在......秒内重定向到Java SE下载页面.请将书签更新到Java SE下载页面.

我做了一些谷歌搜索和Java发布历史等.但找不到任何具体的原因.

我有几个问题 -

  1. Oracle仍在支持JDK 1.8,但是停止向JDK 9发布更新,为什么?
  2. 我应该继续使用JDK 1.8一段时间,然后直接切换到JDK 10吗?

java java-8 java-9 java-10

15
推荐指数
1
解决办法
3888
查看次数