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

JNLPClassLoader.getPermissions throws NullPointerException for library jars on OS X

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: P3 P3
    • 9
    • 7u55
    • deploy
    • x86
    • os_x

      FULL PRODUCT VERSION :
      java version "1.7.0_55"
      Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
      Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      OS X 10.9.2 - Darwin 13.1.0 Darwin Kernel Version 13.1.0: Wed Apr 2 23:52:02 PDT 2014; root:xnu-2422.92.1~2/RELEASE_X86_64 x86_64

      A DESCRIPTION OF THE PROBLEM :
      When trying to launch a webstart application that consist of a main jar and several referenced library jars, the application launches. However, when the code gets to a point where it needs to load a class out of another jar (db2 jar in this instance), a NullPointerException is thrown in JNLPClassLoader.getPermissions. This works fine on Windows with 7U55, but I've yet to get it working on the OS X version.

      REGRESSION. Last worked in version 7u51

      ADDITIONAL REGRESSION INFORMATION:
      java version "1.7.0_51"
      Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
      Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Try to load a class from a third party jar file (I used the db2jcc.jar in this example, but I have custom libraries I have written that are exhibiting the same behavior).

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Class loads and the program continues to operate
      ACTUAL -
      NullPointerException occurs trying to load a class from another jar, causing the application not to load or run correctly

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      java.lang.NullPointerException
      at com.sun.jnlp.JNLPClassLoader.getPermissions(Unknown Source)
      at java.security.SecureClassLoader.getProtectionDomain(SecureClassLoader.java:206)
      at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
      at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
      at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
      at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
      at java.lang.Class.forName0(Native Method)
      at java.lang.Class.forName(Class.java:190)
      at gmc.util.LoginManager.logon(LoginManager.java:48)
      at gmc.ui.UILogin.validateLogin(UILogin.java:165)
      at gmc.ui.UILogin.access$1(UILogin.java:160)
      at gmc.ui.UILogin$5.keyPressed(UILogin.java:153)
      at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
      at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Display.sendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Widget.sendKeyEvent(Unknown Source)
      at org.eclipse.swt.widgets.Text.sendKeyEvent(Unknown Source)
      at org.eclipse.swt.widgets.Widget.sendKeyEvent(Unknown Source)
      at org.eclipse.swt.widgets.Text.sendKeyEvent(Unknown Source)
      at org.eclipse.swt.widgets.Control.doCommandBySelector(Unknown Source)
      at org.eclipse.swt.widgets.Display.windowProc(Unknown Source)
      at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
      at org.eclipse.swt.widgets.Widget.callSuper(Unknown Source)
      at org.eclipse.swt.widgets.Widget.superKeyDown(Unknown Source)
      at org.eclipse.swt.widgets.Widget.keyDown(Unknown Source)
      at org.eclipse.swt.widgets.Control.keyDown(Unknown Source)
      at org.eclipse.swt.widgets.Display.windowProc(Unknown Source)
      at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
      at org.eclipse.swt.widgets.Widget.callSuper(Unknown Source)
      at org.eclipse.swt.widgets.Widget.windowSendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Shell.windowSendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Display.windowProc(Unknown Source)
      at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
      at org.eclipse.swt.widgets.Display.applicationSendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Display.applicationProc(Unknown Source)
      at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
      at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(Unknown Source)
      at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
      at gmc.ui.UILogin.<init>(UILogin.java:50)
      at gmc.ui.UILogin.proc(UILogin.java:250)

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      In this example, the line blowing up is represented as such:

      java.sql.Driver db2Driver = new com.ibm.db2.jcc.DB2Driver();
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      Only workaround has been to downgrade back to 7U51

            dcherepanov Dmitry Cherepanov
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: