我认为JPMS不支持模块版本.但是,当我这样做时,java --list-modules我有以下输出:
java.activation@9
java.base@9
java.compiler@9
java.corba@9
java.datatransfer@9
java.desktop@9
java.instrument@9
....
Run Code Online (Sandbox Code Playgroud)
所以,我无法理解这@9是什么.这个版本还是什么?如果JPMS支持模块版本,我可以在模块A的module-info中设置,模块A是否需要某个版本的模块B?
我试图使用jdk-9在代码下运行,但在使用命令编译时遇到问题
命令
javac -d mods .\module-info.java com\nirav\modi\Test.java
Run Code Online (Sandbox Code Playgroud)
错误
.\module-info.java:1: error: class, interface, or enum expected
module module1 { }
^
1 error
Run Code Online (Sandbox Code Playgroud)
module-info.java
module module1 {
}
Run Code Online (Sandbox Code Playgroud)
Test.java
package com.nirav.modi;
class Test {
public static void main(String args[]){
System.out.println("Hello Modular...");
}
}
Run Code Online (Sandbox Code Playgroud)
包结构如下
module1\module-info.java
module1\com\nirav\modi\Test.java
Run Code Online (Sandbox Code Playgroud)
JDK版本
java version "9-ea"
Java(TM) SE Runtime Environment (build 9-ea+153)
Java HotSpot(TM) 64-Bit Server VM (build 9-ea+153, mixed mode)
Run Code Online (Sandbox Code Playgroud) 更新到Java 8更新101后,我在以下代码中遇到异常.它与Java 8更新91一起工作正常.
访问密钥库:
KeyStore ks = KeyStore.getInstance("WINDOWS-MY");
ks.load(null, null);
Field field = ks.getClass().getDeclaredField("keyStoreSpi");
field.setAccessible(true);
KeyStoreSpi kss = (KeyStoreSpi) field.get(ks);
Collection entries;
field = kss.getClass().getEnclosingClass().getDeclaredField("entries");
field.setAccessible(true);
// This is where the exception happens
entries = (Collection) field.get(kss);
// I then have to loop on these entries, something like this:
for (Object entry : entries) { //code }
Run Code Online (Sandbox Code Playgroud)
类型转换,抛出异常:
java.util.HashMap cannot be cast to java.util.Collection
Run Code Online (Sandbox Code Playgroud)
Java 8更新101中最近的任何更改?怎么解决?
java ×3
java-9 ×2
java-8 ×1
java-module ×1
java-platform-module-system ×1
module-info ×1
openjdk ×1