On Thu, 19 Aug 2021 23:59:32 GMT, Calvin Cheung <cche...@openjdk.org> wrote:
>> src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/CDSPlugin.java >> line 121: >> >>> 119: @Override >>> 120: public ResourcePool transform(ResourcePool in, ResourcePoolBuilder >>> out) { >>> 121: in.transformAndCopy((file) -> { >> >> This method should not be called in a post-processor. Plugin API needs >> some re-thinking to support post-processor plugin. As `Plugin::transform` >> is abstract method, for now this method should simply throw >> `UnsupportedOperationException`. > > It is being called. The minimal implementation is: > > > @Override > public ResourcePool transform(ResourcePool in, ResourcePoolBuilder out) { > return in; > } > > I've filed [JDK-8272734](https://bugs.openjdk.java.net/browse/JDK-8272743) to > follow-up the issue. Thanks for filing the issue. I didn't expect `Plugin::transform` should be called. This is a good workaround for now. >> test/jdk/tools/jlink/plugins/CDSPluginTest.java line 80: >> >>> 78: String jlinkPath = JDKToolFinder.getJDKTool("jlink"); >>> 79: String[] cmd = {jlinkPath, "--add-modules", >>> "java.base,java.logging", >>> 80: "-J-Dos.name=windows", >>> "--generate-cds-archive", >> >> Is there a better way of setting `os.name` system property on the command >> line? >> >> Maybe override `ModuleTarget` attribute in module-info.class of java.base to >> be a different platform? > > I'd prefer to leave it as is for now since it's in a test case and I don't > think the code is complex. This is fragile by setting `os.name`. ------------- PR: https://git.openjdk.java.net/jdk/pull/5174