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

VersionProps.versionNumbers() is broken

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P3
    • 9
    • 9
    • core-libs
    • None
    • 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

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

              Dates

                Created:
                Updated:
                Resolved: