0

We have a desktop application where we are packing Application Jar and JRE as well to avoid Java dependency in customer machine.

But issue is if the customer is having the Java installed already in there Machine.we are facing issue like no class definition exception because of Java version dependencies for some class.

Now my question is how to launch the application always with the JRE that are packed with Application and ensure it is not use the System JRE if it is installed.

C:\Users\User\Nokia\1830 PSS-APA>jre\bin\java -jar apat.jar
Exception in thread "ApaPowerControlChart" java.lang.NoClassDefFoundError: Could
 not initialize class sun.font.SunFontManager
        at sun.font.FontDesignMetrics.getMetrics(Unknown Source)
        at sun.swing.SwingUtilities2.getFontMetrics(Unknown Source)
        at javax.swing.JComponent.getFontMetrics(Unknown Source)
        at javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.GridLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at javax.swing.JRootPane$RootLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at java.awt.Window.pack(Unknown Source)
        at com.nokia.APA.Chart.ApaPowerControlChart.display(Unknown Source)
        at com.nokia.APA.Chart.ApaPowerControlChart$1.run(Unknown Source)
Exception in thread "ApaPowerControlChart" java.lang.NoClassDefFoundError: Could
 not initialize class sun.font.SunFontManager
        at sun.font.FontDesignMetrics.getMetrics(Unknown Source)
        at sun.swing.SwingUtilities2.getFontMetrics(Unknown Source)
        at javax.swing.JComponent.getFontMetrics(Unknown Source)
        at javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.GridLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at javax.swing.JRootPane$RootLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at java.awt.Window.pack(Unknown Source)
        at com.nokia.APA.Chart.ApaPowerControlChart.display(Unknown Source)
        at com.nokia.APA.Chart.ApaPowerControlChart$1.run(Unknown Source)
Exception in thread "ApaPerformanceChart" java.lang.NoClassDefFoundError: Could
not initialize class sun.font.SunFontManager
        at sun.font.FontDesignMetrics.getMetrics(Unknown Source)
        at sun.swing.SwingUtilities2.getFontMetrics(Unknown Source)
        at javax.swing.JComponent.getFontMetrics(Unknown Source)
        at javax.swing.plaf.basic.BasicTabbedPaneUI.getFontMetrics(Unknown Sourc
e)
        at javax.swing.plaf.basic.BasicTabbedPaneUI.calculateMaxTabWidth(Unknown
 Source)
        at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateSi
ze(Unknown Source)
        at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.preferredLa
youtSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at javax.swing.JRootPane$RootLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at java.awt.Window.pack(Unknown Source)
        at com.nokia.APA.Chart.ApaPerformanceChart.display(Unknown Source)
        at com.nokia.APA.Chart.ApaPerformanceChart$1.run(Unknown Source)
Exception in thread "ApaChannelTuningChart" java.lang.NoClassDefFoundError: Coul
d not initialize class sun.font.SunFontManager
        at sun.font.FontDesignMetrics.getMetrics(Unknown Source)
        at sun.swing.SwingUtilities2.getFontMetrics(Unknown Source)
        at javax.swing.JComponent.getFontMetrics(Unknown Source)
        at javax.swing.plaf.basic.BasicTabbedPaneUI.getFontMetrics(Unknown Sourc
e)
        at javax.swing.plaf.basic.BasicTabbedPaneUI.calculateMaxTabWidth(Unknown
 Source)
        at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateSi
ze(Unknown Source)
        at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.preferredLa
youtSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at javax.swing.JRootPane$RootLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at java.awt.Window.pack(Unknown Source)
        at com.nokia.APA.Chart.ApaChannelTuningChart.display(Unknown Source)
Cœur
  • 37,241
  • 25
  • 195
  • 267
  • Please share the exact and complete exception. – Sripriya V May 15 '17 at 08:17
  • 1
    We'd need some more info on the exception, your packaging and how you are starting the application. – Thomas May 15 '17 at 08:18
  • @Thomas, We are packing the application with install shield as exe ,installing exe in user machine and starting the app. – user2964628 May 15 '17 at 08:32
  • I don't really know that exe packaging but I'd assume you have (or at least should have) some influence on which `java` command is being called, i.e. it shouldn't just be a call to `java` because that relies on what's in the `PATH` variable but use a relative path to the correct jvm. – Thomas May 15 '17 at 08:44

0 Answers0