Tag: java 9

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

我将Java 8中的maven项目迁移到Java 9项目而没有Eclipse OxyGen 1a任何构建工具。 所以我的module-info.java看起来像这样: 但java.xml.bind是不可访问的,虽然它在我的模块路径中: 那么这里有什么问题?

在java 9下运行时将jar添加到类路径

直到java9在运行时通过编程方式将所有人使用的外部jar添加到类路径: URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader(); Method method = URLClassLoader.class.getDeclaredMethod(“addURL”, new Class[]{URL.class}); method.invoke(sysloader, new Object[]{file.toURI().toURL()}); 现在用java9我们有问题: 线程“main”中的exceptionjava.lang.ClassCastException:java.base / jdk.internal.loader.ClassLoaders $ AppClassLoader无法强制转换为java.base / java.net.URLClassLoader URLClassLoader在Java 9中不再起作用。现在在jdk9下如何以编程方式在运行时向类路径添加外部jar?

–add-modules仅在编译时

我正在用maven和java-9构建我的项目。 我在我的pom.xml文件中添加了: maven-compiler-plugin ${maven-compiler-plugin.version} ${java.version} ${java.version} –add-modules java.xml.bind 但是,要运行应用程序,我必须像这样运行它: java -jar –add-modules java.xml.bind my-app.jar 有没有办法构建应用程序,从没有–add-modules java.xml.bind的命令行运行到java命令行参数?

JDK9:发生了非法reflection访问操作。 org.python.core.PySystemState

我正在尝试使用Java9(JDK9)运行DMelt程序( http://jwork.org/dmelt/ )程序,它给了我错误,例如: WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.python.core.PySystemState (file:/dmelt/jehep/lib/jython/jython.jar) to method java.io.Console.encoding() WARNING: Please consider reporting this to the maintainers of org.python.core.PySystemState WARNING: Use –illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release […]

Tomcat 7.0.73不适用于Java 9

由于catalina.sh中的默认“java.endorsed.dirs”选项,因此无法使用java 9启动基于tomcat的应用程序。 -Djava.endorsed.dirs=/usr/local/share/tomcat/endorsed is not supported. Endorsed standards and standalone APIs in modular form will be supported via the concept of upgradeable modules. Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. 有没有解决这个问题?

在Java 9中运行时扫描类路径/模块路径

我似乎无法找到关于是否仍然可以在运行时扫描所有可用类(用于接口,注释等)的任何信息,就像Spring,Reflections和许多其他框架和库当前所做的那样,面对Jigsaw相关的更改类的加载方式。 编辑 :这个问题是关于扫描寻找类的真实物理文件路径。 另一个问题是关于动态加载类和资源。 这是相关的,但非常重复 。 更新 :Jetty项目为此制定了标准化API的JEP提议 。 如果你有办法帮助实现这个目标,请做。 否则,等等和希望。 更新2 :找到这个相关的发声post。 引用后代的代码片段: 如果您真的只是想要获取引导层中模块的内容(在启动时解析的模块),那么您将执行以下操作: ModuleLayer.boot().configuration().modules().stream() .map(ResolvedModule::reference) .forEach(mref -> { System.out.println(mref.descriptor().name()); try (ModuleReader reader = mref.open()) { reader.list().forEach(System.out::println); } catch (IOException ioe) { throw new UncheckedIOException(ioe); } });

在Java 9中重载的方便工厂方法的重点是什么?

Java 9附带了用于创建不可变列表的便捷工厂方法 。 最后,列表创建非常简单: List list = List.of(“foo”, “bar”); 但是这个方法有12个重载版本,11个有0到10个元素,还有一个有var args。 static List of(E… elements) Set和Map的情况也是如此。 由于存在var args方法,有多少11个方法有什么意义呢? 我认为var-args创建一个数组,所以其他11个方法可以跳过创建一个额外的对象,在大多数情况下,0-10个元素就可以了。 还有其他原因吗?

无法在Java 9中为自动生成的模块名称派生模块描述符?

我的项目依赖于Netty Epoll传输。 这是依赖: io.netty netty-transport-native-epoll ${netty.version} ${epoll.os} 此依赖项的自动生成的模块名称为: netty.transport.native.epoll 由于native 9中保留了native关键字,因此无法将此模块作为依赖项添加到我的项目中: module core { requires netty.transport.native.epoll; } 由于: module not found: netty.transport. 此外,jar工具–describe-module报告以下内容: 无法导出模块描述符:netty-transport-native-epoll-4.1.17.Final-SNAPSHOT-linux-x86_64.jar netty.transport.native.epoll:无效的模块名称:’native’不是Java标识符 有没有解决方法? (当然,除了“发布正确的网络工件”)。 编辑 : 作为维护者的快速修复 – 您可以添加下一行来构建: netty.transport.epoll