Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8160457

VersionProps.versionNumbers() is broken

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: 9
    • Fix Version/s: 9
    • Component/s: core-libs
    • Labels:
      None
    • Subcomponent:
    • Resolved In Build:
      b126

      Description

      VersionProps.versionNumbers() incorrectly parses a Java version string because it doesn't skip the separating dots. The current version only works for one digit versions like "9" but will fail for any longer version string like for example "9.0.0.1" with:

              at java.lang.NumberFormatException.forInputString(java.base@9.0.0.1-internal/NumberFormatException.java:65)
              at java.lang.Integer.parseInt(java.base@9.0.0.1-internal/Integer.java:791)
              at java.lang.VersionProps.versionNumbers(java.base@9.0.0.1-internal/VersionProps.java:76)
              at java.lang.Runtime.version(java.base@9.0.0.1-internal/Runtime.java:940)

      This also breaks the build which uses a newly built jdk for bootstrapping:

       Generating lib/classlist
      /priv/d046063/OpenJDK/output-jdk9-dev-opt/support/interim-image/bin/java -XX:DumpLoadedClassList=/priv/d046063/OpenJDK/output-jdk9-dev-opt/support/classlist/classlist.tmp \
                  -cp /priv/d046063/OpenJDK/output-jdk9-dev-opt/support/classlist.jar \
                  build.tools.classlist.HelloClasslist 2>&1
      Error: A JNI error has occurred, please check your installation and try again
      Exception in thread "main" java.lang.ExceptionInInitializerError
              at jdk.internal.loader.URLClassPath$JarLoader.getJarFile(java.base@9.0.0.1-internal/URLClassPath.java:697)
              at jdk.internal.loader.URLClassPath$JarLoader.access$600(java.base@9.0.0.1-internal/URLClassPath.java:586)
              at jdk.internal.loader.URLClassPath$JarLoader$1.run(java.base@9.0.0.1-internal/URLClassPath.java:642)
              at jdk.internal.loader.URLClassPath$JarLoader$1.run(java.base@9.0.0.1-internal/URLClassPath.java:635)
              at java.security.AccessController.doPrivileged(java.base@9.0.0.1-internal/Native Method)
              at jdk.internal.loader.URLClassPath$JarLoader.ensureOpen(java.base@9.0.0.1-internal/URLClassPath.java:634)
              at jdk.internal.loader.URLClassPath$JarLoader.<init>(java.base@9.0.0.1-internal/URLClassPath.java:609)
              at jdk.internal.loader.URLClassPath$3.run(java.base@9.0.0.1-internal/URLClassPath.java:389)
              at jdk.internal.loader.URLClassPath$3.run(java.base@9.0.0.1-internal/URLClassPath.java:373)
              at java.security.AccessController.doPrivileged(java.base@9.0.0.1-internal/Native Method)
              at jdk.internal.loader.URLClassPath.getLoader(java.base@9.0.0.1-internal/URLClassPath.java:372)
              at jdk.internal.loader.URLClassPath.getLoader(java.base@9.0.0.1-internal/URLClassPath.java:349)
              at jdk.internal.loader.URLClassPath.getResource(java.base@9.0.0.1-internal/URLClassPath.java:215)
              at jdk.internal.loader.BuiltinClassLoader$3.run(java.base@9.0.0.1-internal/BuiltinClassLoader.java:463)
              at jdk.internal.loader.BuiltinClassLoader$3.run(java.base@9.0.0.1-internal/BuiltinClassLoader.java:460)
              at java.security.AccessController.doPrivileged(java.base@9.0.0.1-internal/Native Method)
              at jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(java.base@9.0.0.1-internal/BuiltinClassLoader.java:459)
              at jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(java.base@9.0.0.1-internal/BuiltinClassLoader.java:406)
              at jdk.internal.loader.BuiltinClassLoader.loadClass(java.base@9.0.0.1-internal/BuiltinClassLoader.java:364)
              at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(java.base@9.0.0.1-internal/ClassLoaders.java:185)
              at java.lang.ClassLoader.loadClass(java.base@9.0.0.1-internal/ClassLoader.java:419)
              at sun.launcher.LauncherHelper.loadMainClass(java.base@9.0.0.1-internal/LauncherHelper.java:587)
              at sun.launcher.LauncherHelper.checkAndLoadMain(java.base@9.0.0.1-internal/LauncherHelper.java:499)
      Caused by: java.lang.NumberFormatException: For input string: ""
              at java.lang.NumberFormatException.forInputString(java.base@9.0.0.1-internal/NumberFormatException.java:65)
              at java.lang.Integer.parseInt(java.base@9.0.0.1-internal/Integer.java:791)
              at java.lang.VersionProps.versionNumbers(java.base@9.0.0.1-internal/VersionProps.java:76)
              at java.lang.Runtime.version(java.base@9.0.0.1-internal/Runtime.java:940)
              at java.util.jar.JarFile.<clinit>(java.base@9.0.0.1-internal/JarFile.java:156)
              ... 23 more
      make[3]: *** [/priv/d046063/OpenJDK/output-jdk9-dev-opt/support/classlist/classlist] Error 1
      make[3]: Leaving directory `/net/usr.work/d046063/OpenJDK/jdk9-dev/jdk/make'
      make[2]: *** [generate-classlist] Error 1
      make[2]: Leaving directory `/net/usr.work/d046063/OpenJDK/jdk9-dev'

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              simonis Volker Simonis
              Reporter:
              simonis Volker Simonis
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: