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

the command "java -splash:image.gif -jar xxx.jar" will result in "java.dll missing in your computer"error, but launches application

XMLWordPrintable

    • 9
    • x86_64
    • windows_7

      FULL PRODUCT VERSION :
      JRE 9 64bit GA(jre-9_windows-x64_bin.exe)

      ADDITIONAL OS VERSION INFORMATION :
      Windows 7 Professional 64-bit Service Pack 1

      A DESCRIPTION OF THE PROBLEM :
      [Description]
      Display Splash screen for swing application either using manifest.mf/SplashScreen-Image: option or command-line "java -splash:image.gif" -jar xxx.jar" shows java.dll missing error popup continuously. But after clicking OK button on each error popup, application launches and works as expected.

      [Additional Observation]
      1.Same issue observed in Win8, Win8.1 but Win 10 doesn't show this issue.
      2.If we double+click to launch xxx.jar, it displays splash screen and launches without error
      3.Issue not observed in Java8 and Java7.
        


      REGRESSION. Last worked in version 8u144

      ADDITIONAL REGRESSION INFORMATION:
      java version "9"
      Java(TM) SE Runtime Environment (build 9+181)
      Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      1. Install JRE 9 64-bit GA.
      2. Prepare application jar file with manifest.mf includes SplashScreen-Image:
      3. launch application using java -jar xxx.jar

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Launch application without any error popup.
      ACTUAL -
      Displays many (6-7) java.dll missing error popup and after clicking Ok launches the application

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      java.exe - System error
      The program can't start because java.dll missing from your computer. Try reinstalling the program to fix this problem

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      JDialogEx.java:

      package jdialogex;

      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;
      import java.io.IOException;
      import java.net.InetSocketAddress;
      import java.net.Socket;
      import java.util.logging.Level;
      import java.util.logging.Logger;
      import javax.swing.*;

      /**
       *
       * @author blokesh
       */
      public class JDialogEx {
          private static String osVersion;
          private static String javaVersion;
          private static Logger logger = Logger.getLogger(JDialogEx.class.getName());

          /**
           * @param args the command line arguments
           */
          public static void main(String[] args) {
              try {
                  osVersion = System.getProperty("os.name");
              } catch (Exception ignored) {
              }
              try {
                  javaVersion = System.getProperty("java.vendor") + " / " + System.getProperty("java.version");
              } catch (Exception ignored) {
              }

              
              System.out.println("[STARTUP] OS Version : " + osVersion);
              System.out.println("[STARTUP] Java Version : " + javaVersion);
             JFrame f = new JFrame();
              final JPanel panel1 = new JPanel();
              final JDialog dialog = new JDialog(f, "Information", true);
              JLabel lbl = new JLabel("Menu is created. Please continue...");
              panel1.add(lbl);
              JButton btn = new JButton("Ok");
              btn.addActionListener(new ActionListener() {
                  public void actionPerformed(ActionEvent e) {
                      dialog.setVisible(false);
                      dialog.dispose();
                  }
              });
              panel1.add(btn);
              panel1.setAlignmentY(Float.MAX_VALUE);
              dialog.add(panel1);
              dialog.setBounds(100, 500, 500, 100);
              Timer timer = new Timer(1000, new ActionListener() {
                  public void actionPerformed(ActionEvent e) {
                      dialog.setVisible(false);
                      dialog.dispose();
                  }
              });
              timer.setRepeats(false);
              timer.start();

              dialog.setVisible(true); // if modal, application will pause here
       final JPanel panel = new JPanel();

          }
          
      }

      MANIFEST.MF:
      Manifest-Version: 1.0
      Ant-Version: Apache Ant 1.9.2
      Created-By: 1.8.0_131-b11 (Oracle Corporation)
      Class-Path:
      X-COMMENT: Main-Class will be added automatically by build
      SplashScreen-Image: butterfly.gif
      Main-Class: jdialogex.JDialogEx


      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      1. If I update %PATH% environment varible with JRE/bin issue resolves.
      2. Instead launching from java -jar xxx.jar. Launch using double+click will not show this error. But client logs won't be available.

        1. JDK9.PNG
          JDK9.PNG
          15 kB
        2. image001.png
          image001.png
          16 kB

            Unassigned Unassigned
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            9 Start watching this issue

              Created:
              Updated: