JDK-8285966 : java.io.File.toURL doesn't tolerate file:\C:\dev\ which breaks xjc on Windows after CPU22_04
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.io
  • Affected Version: 8u331,11.0.15
  • Priority: P3
  • Status: Resolved
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2022-04-29
  • Updated: 2022-05-02
  • Resolved: 2022-05-02
Related Reports
Duplicate :  
Description
ADDITIONAL SYSTEM INFORMATION :
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: C:\Program Files\JetBrains\IntelliJ IDEA 2022.1\plugins\maven\lib\maven3
Java version: 11.0.15, vendor: Eclipse Adoptium, runtime: C:\Program Files\Eclipse Adoptium\jdk-11.0.15.10-hotspot
Default locale: de_DE, platform encoding: UTF-8
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

A DESCRIPTION OF THE PROBLEM :
Maven cxf-xjc-plugin:3.3.1:xsdtojava generates URLs like this: "file:\C:\dev\m2repo\com\github\krasa\krasa-jaxb-tools\1.8\krasa-jaxb-tools-1.8.jar".
Even if it is strange, it works in  jdk-11.0.12.7-openj9 (Semeru) and also in jdk-11.0.14.1+1 (Eclipse Adoptium JDK). 
In 11.0.15 Releases jdk-11.0.15.10-openj9 (Semeru) and jdk-11.0.15.10-hotspot (Adoptium), it crashes:

[INFO] Building jar: C:\Users\Dev28\AppData\Local\Temp\cxf-xjc-plugin6285953335413304004.jar
[DEBUG] Exception in thread "main" com.sun.tools.xjc.BadCommandLineException: "file:\C:\dev\m2repo\com\github\krasa\krasa-jaxb-tools\1.8\krasa-jaxb-tools-1.8.jar" ist kein gültiger Dateiname: {1}
[DEBUG] 	at com.sun.tools.xjc.Options.parseArgument(Options.java:515)
[DEBUG] 	at com.sun.tools.xjc.Options.parseArguments(Options.java:827)
[DEBUG] 	at org.apache.cxf.maven_plugin.XSDToJavaRunner.run(XSDToJavaRunner.java:170)
[DEBUG] 	at org.apache.cxf.maven_plugin.XSDToJavaRunner.main(XSDToJavaRunner.java:360)
[DEBUG] Caused by: java.net.MalformedURLException: Invalid file path
[DEBUG] 	at java.base/java.io.File.toURL(File.java:695)
[DEBUG] 	at com.sun.tools.xjc.Options.parseArgument(Options.java:512)
[DEBUG] 	... 3 more


REGRESSION : Last worked in version 11

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Create the two files (content doesn't matter):
src/main/resources/binding.xjb
src/main/resources/data.xsd
Create a pom.xml, that contains:

  <dependencies>
    <dependency>
      <groupId>javax.validation</groupId>
      <artifactId>validation-api</artifactId>
      <version>2.0.1.Final</version>
    </dependency>
    <dependency>
      <groupId>javax.xml.bind</groupId>
      <artifactId>jaxb-api</artifactId>
      <version>2.3.1</version>
    </dependency>
        <dependency>
            <groupId>com.github.krasa</groupId>
            <artifactId>krasa-jaxb-tools</artifactId>
            <version>1.8</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-xjc-plugin</artifactId>
                <version>3.3.1</version>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>xsdtojava</goal>
                        </goals>
                        <configuration>
                            <sourceRoot>${project.build.directory}/generated-sources</sourceRoot>
                            <xsdOptions>
                                <xsdOption>
                                    <extension>true</extension>
                                    <xsd>src/main/resources/data.xsd</xsd>
                                    <bindingFile>src/main/resources/binding.xjb</bindingFile>
                                    <packagename>com.example</packagename>
                                    <extensionArgs>
                                        <extensionArg>-XJsr303Annotations</extensionArg>
                                        <extensionArg>-XJsr303Annotations:targetNamespace=http://www.gdv-online.de/snetz/namespaces/KSN/release2003</extensionArg>
                                    </extensionArgs>
                                </xsdOption>
                            </xsdOptions>
                            <extensions>
                                <extension>com.github.krasa:krasa-jaxb-tools:1.8</extension>
                            </extensions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
xjc tries to generate DTOs (but fails because of an invalid schema).
ACTUAL -
xjc doesn't even start and fails with an exception.

---------- BEGIN SOURCE ----------
C:\dev>cd "C:\Program Files"

C:\Program Files>"C:\Program Files\Eclipse Adoptium\jdk-11.0.14.1+1\bin\jshell.exe"
|  Welcome to JShell -- Version 11.0.14.1
|  For an introduction type: /help intro

jshell> new File("file:\\C:\\dev\\temp.jar").toURL();
$1 ==> file:/C:/Program Files/file:/C:/dev/temp.jar

jshell>

C:\Program Files>"C:\Program Files\Eclipse Adoptium\jdk-11.0.15.10-hotspot\bin\jshell.exe"
|  Welcome to JShell -- Version 11.0.15
|  For an introduction type: /help intro

jshell> new File("file:\\C:\\dev\\temp.jar").toURL();
|  Exception java.net.MalformedURLException: Invalid file path
|        at File.toURL (File.java:695)
|        at (#1:1)

jshell>
---------- END SOURCE ----------

FREQUENCY : always



Comments
Resolving as duplicate of JDK-8285445.
02-05-2022

The default has been reserved so this is no longer be an issue. Separately, it would be useful to track down where the bad URL is coming from. If the file path is C:\dev\m2repo when I would expect the file URL to be file:/C:/dev/m2repo.
30-04-2022

The observations on Windows 10: JDK 8u331+5: Passed. JDK 8u331+6: Failed, MalformedURLException thrown JDK 11.0.5+5: Passed. JDK 11.0.5+6: Failed. This issue looks like a regression of JDK-8278356
30-04-2022