JPMS如何实现ModuleReader?
How to implement ModuleReader for JPMS?
我试图了解如何实现自定义 ModuleFinder。为此,我需要实现自定义 ModuleReference,而对于 ModuleReference,我需要实现 ModuleReader。这是我的代码:
ModuleReference ref = new ModuleReference(moduleDescriptor, Paths.get(path).toUri()) {
@Override
public ModuleReader open() throws IOException {
ModuleReader moduleReader = new ModuleReader() {
@Override
public Optional<URI> find(String name) throws IOException {
//LINE X
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Stream<String> list() throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void close() throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
};
return moduleReader;
}
};
我不明白我应该在 LINE X
写什么。据我所知,这个模块不是由 JVM 加载的,所以我必须为文件系统上的 jar 内的资源提供一个 URI 吗?像 /home/Sam/temp/foo-1.jar!META-INF/temp.txt
之类的东西?
可以在此邮件线程中找到 ModuleReader 的示例 http://mail.openjdk.java.net/pipermail/jigsaw-dev/2018-September/013924.html
我试图了解如何实现自定义 ModuleFinder。为此,我需要实现自定义 ModuleReference,而对于 ModuleReference,我需要实现 ModuleReader。这是我的代码:
ModuleReference ref = new ModuleReference(moduleDescriptor, Paths.get(path).toUri()) {
@Override
public ModuleReader open() throws IOException {
ModuleReader moduleReader = new ModuleReader() {
@Override
public Optional<URI> find(String name) throws IOException {
//LINE X
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Stream<String> list() throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void close() throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
};
return moduleReader;
}
};
我不明白我应该在 LINE X
写什么。据我所知,这个模块不是由 JVM 加载的,所以我必须为文件系统上的 jar 内的资源提供一个 URI 吗?像 /home/Sam/temp/foo-1.jar!META-INF/temp.txt
之类的东西?
可以在此邮件线程中找到 ModuleReader 的示例 http://mail.openjdk.java.net/pipermail/jigsaw-dev/2018-September/013924.html