Tag: java 9

Java 9重叠非导出包

各种资源( infoq , jigsaw-dev , osdir )表明在不同的java模块中具有相同的包将导致LayerInstantiationException ,即使包是模块的内部(未导出)。 这似乎与要求所说的完全相反: Java编译器,虚拟机和运行时系统必须确保包含相同名称的包的模块不会相互干扰。 如果两个不同的模块包含相同名称的包,那么从每个模块的角度来看,该包中的所有类型和成员仅由该模块定义。 那么(将)应用程序使用的两个模块能够包含同名的私有包吗? 编辑 这是斯坦尼斯拉夫·卢基亚诺夫指出的JMPS 问题

Java 9中的JavaLangAccess和SharedSecrets

似乎在Java 9中删除了sun.misc包中的SharedSecrets和JavaLangAccess类。 Java 9中是否有替换这些类提供的function?

限制由javapackager添加的模块

我试图通过限制它包含的模块来减小我的应用程序的大小。 我已经使用jlink为我的运行时做了这个。 但是,当我使用–add-modules和–limit-modules选项运行javapackager使用逗号分隔的列表来显示我用于运行时的相同的一javapackager –add-modules ,它仍然坚持要添加所有模块。 它似乎不想尊重我给它的选项。 如何获得该工具来限制它添加到我的应用程序包中的模块? “Adding modules: [java.base, java.desktop, java.naming, java.sql, java.xml, java.logging, java.management, java.scripting, java.compiler, java.rmi, java.activation, jdk.charsets, jdk.xml.dom, java.datatransfer, jdk.httpserver, javafx.base, java.security.sasl, jdk.zipfs, jdk.crypto.ec, jdk.management.agent, java.sql.rowset, javafx.swing, jdk.jsobject, jdk.sctp, java.smartcardio, jdk.unsupported, jdk.scripting.nashorn, java.security.jgss, javafx.graphics, javafx.fxml, jdk.dynalink, javafx.media, jdk.accessibility, jdk.security.jgss, javafx.web, java.xml.crypto, jdk.jfr, jdk.packager.services, jdk.net, javafx.controls, java.prefs, jdk.naming.rmi, jdk.jdwp.agent, java.instrument, jdk.management, jdk.security.auth, […]

Java 9:模块路径上可能有2个具有相同名称的模块

是否可以在模块路径上拥有2个具有完全相同名称(但内容略有不同)的模块? 据我所知,Java 9编译器并没有抱怨它。 我有2个模块声明如下: module com.dj.helper { exports com.dj.helper; } 两者都包含com.dj.helper包,但在包中内容不同。 然后在我的主应用程序中,我想要导入此模块: module com.dj { requires com.dj.helper; } 具有相同名称的两个模块都在我的模块路径上。 我希望在编译我的com.dj模块时,编译器会抱怨同一个模块存在两次,但事实并非如此。 这是否有效地意味着您可以在模块路径上拥有相同jar的2个版本,而Java将不知道使用哪个版本?

找不到Java 9 Zip End Headerexception

我试图使用java- SRTM文件从这个URL批量下载zip文件,它需要用户名/密码下载,我使用以下java代码,它给了我以下exception java.util.zip.ZipException: zip END header not found at java.util.zip.ZipFile$Source.zerror(java.base@9-internal/ZipFile.java:1210) at java.util.zip.ZipFile$Source.findEND(java.base@9-internal/ZipFile.java:1119) at java.util.zip.ZipFile$Source.initCEN(java.base@9-internal/ZipFile.java:1126) at java.util.zip.ZipFile$Source.(java.base@9-internal/ZipFile.java:963) at java.util.zip.ZipFile$Source.get(java.base@9-internal/ZipFile.java:933) at java.util.zip.ZipFile.(java.base@9-internal/ZipFile.java:213) at java.util.zip.ZipFile.(java.base@9-internal/ZipFile.java:145) at java.util.zip.ZipFile.(java.base@9-internal/ZipFile.java:159) at toposwapper.rules.ZipFileDownloadAction.execute(ZipFileDownloadAction.java:29) 这是我的java版本 java openjdk version “9-internal” OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src) OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode) 这是我用来下载的代码 – URL url1 = null; URLConnection conn = null; InputStream […]

在IntelliJ IDEA 2017.2.1中无法使用–patch-module编译Java 9模块

我试图熟悉Java 9模块以及如何在IntelliJ中定义它们。 除此之外,我想使用–patch-module编译器/ JVM标志解决拆分包问题,我不知道如何使它在IntelliJ中工作。 我正在使用IntelliJ IDEA 2017.2.1使用Java HotSpot(TM)64位服务器VM构建#IC 172.3544.35(内置9 + 180,混合模式)。 这是我的源文件MyImmutableList.java : package com.google.common.collect; public class MyImmutableList extends RegularImmutableList { public MyImmutableList(Object[] array) { super(array); } } 它属于我的模块com.effjava.collect与module-info.java : module com.effjava.collect { // do not require module guava; instead patch this module with guava.19-0.jar via: // javac –patch-module com.effjava.collect=guava-19.0.jar module-info.java com/google/common/collect/MyImmutableList.java // requires guava; […]

WAR 9文件的Java 9模块化也是如此吗?

Java EE 7应用程序服务器,特别是Servlet 3.1容器应该允许我们部署包含Web应用程序的WAR文件。 WAR文件本质上是一个带有部署描述符( web.xml )和其他几个元素的JAR。 另一方面,Java 9引入了模块化JAR文件的概念,即带有模块描述符( module-info.class )的JAR,它根据项目Jigsaw制作模块。 那么,WAR文件是否也包含模块描述符并制作“模块化WAR文件”? 是否已有应用程序服务器能够接受“模块化WAR文件”的部署? 一般来说,Java 9模块化方面的servlet容器和WAR文件的未来是什么?

如何在脚本结束时关闭jshell?

如何指示jshell在脚本结束时终止,类似于其他语言的解释器,例如python3或node ? 遵循命令 ./jshell -q /tmp/shell.java 使用脚本/tmp/shell.java System.out.println(“Hello world”); 版画 Hello world jshell> 并等待进一步的命令。 我希望它立即停止在文件的末尾。 我正在寻找比System.exit(0);更优雅的东西System.exit(0); 在脚本的最后。

Java 8/9:String中的字符是否可以映射到其索引(使用流)?

给定一个String s和一个char c ,我很好奇是否存在一些从s生成List list s (其中list中的元素表示s中c的索引)。 一个接近但不正确的方法是: public static List getIndexList(String s, char c) { return s.chars() .mapToObj(i -> (char) i) .filter(ch -> ch == c) .map(s::indexOf) // Will obviously return the first index every time. .collect(Collectors.toList()); } 以下输入应产生以下输出: getIndexList(“Hello world!”, ‘l’) -> [2, 3, 9]

什么是Java 9中的开放模块以及如何使用它

模块与open关键字之前和之后有什么区别? 例如: open module foo { } module foo { }