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

Reply via email to