tmar89
asked on
Accessing helper classes for an Applet through a jar
I have an applet that is included in a jar file. The applet class has an import for a class within package access. The applet works in Eclipse but when I deploy it and use it with a browser, it loads the applet class and when it tries to access a helper class within the package the error console says it cannot initialize that helper class. But if its in the jar file and it can find the applet class, why can't it find other classes in the jar? For instance, I have package.myApplet and package.myHelperClass. Both classes are in the jar file. In my applet loader, I have the archive set to the jar, and the code set to package.myApplet. It loads, but says it cannot initialize package.myHelperClass in the Java Console.
HTML:
<applet archive="myJar.jar" code="package.myApplet" height="200" width="200"></applet>
Contents of myJar.jar:
package/myApplet.class
package/myHelperClass.clas s
Another note is that I am trying to access the helper class statically, ie myHelperClass.someStaticMe thod(). I don't create an instance.
HTML:
<applet archive="myJar.jar" code="package.myApplet" height="200" width="200"></applet>
Contents of myJar.jar:
package/myApplet.class
package/myHelperClass.clas
Another note is that I am trying to access the helper class statically, ie myHelperClass.someStaticMe
ASKER
META-INF/MANIFEST.MF
package/myApplet$1.class
package/myApplet$2.class
package/myApplet$3.class
package/myApplet$4.class
package/myApplet$5.class
package/myApplet$6.class
package/myApplet$7.class
package/myApplet.class
package/myHelperClass.clas s
package/myApplet$1.class
package/myApplet$2.class
package/myApplet$3.class
package/myApplet$4.class
package/myApplet$5.class
package/myApplet$6.class
package/myApplet$7.class
package/myApplet.class
package/myHelperClass.clas
ASKER
To give more info on the error, Java Console responds with:
Exception in thread "AWT-EventQueue-1" java.lang.NoClassDefFoundE rror: Could not initialize class package.myHelperClass
at package.myApplet$1.actionP erformed(m yApplet.ja va:42)
at javax.swing.AbstractButton .fireActio nPerformed (Unknown Source)
at javax.swing.AbstractButton $Handler.a ctionPerfo rmed(Unkno wn Source)
at javax.swing.DefaultButtonM odel.fireA ctionPerfo rmed(Unkno wn Source)
at javax.swing.DefaultButtonM odel.setPr essed(Unkn own Source)
at javax.swing.plaf.basic.Bas icButtonLi stener.mou seReleased (Unknown Source)
at java.awt.Component.process MouseEvent (Unknown Source)
at javax.swing.JComponent.pro cessMouseE vent(Unkno wn Source)
at java.awt.Component.process Event(Unkn own Source)
at java.awt.Container.process Event(Unkn own Source)
at java.awt.Component.dispatc hEventImpl (Unknown Source)
at java.awt.Container.dispatc hEventImpl (Unknown Source)
at java.awt.Component.dispatc hEvent(Unk nown Source)
at java.awt.LightweightDispat cher.retar getMouseEv ent(Unknow n Source)
at java.awt.LightweightDispat cher.proce ssMouseEve nt(Unknown Source)
at java.awt.LightweightDispat cher.dispa tchEvent(U nknown Source)
at java.awt.Container.dispatc hEventImpl (Unknown Source)
at java.awt.Component.dispatc hEvent(Unk nown Source)
at java.awt.EventQueue.dispat chEvent(Un known Source)
at java.awt.EventDispatchThre ad.pumpOne EventForFi lters(Unkn own Source)
at java.awt.EventDispatchThre ad.pumpEve ntsForFilt er(Unknown Source)
at java.awt.EventDispatchThre ad.pumpEve ntsForHier archy(Unkn own Source)
at java.awt.EventDispatchThre ad.pumpEve nts(Unknow n Source)
at java.awt.EventDispatchThre ad.pumpEve nts(Unknow n Source)
at java.awt.EventDispatchThre ad.run(Unk nown Source)
myApplet.java line 42:
myHelperClass.checkEvent() ;
Exception in thread "AWT-EventQueue-1" java.lang.NoClassDefFoundE
at package.myApplet$1.actionP
at javax.swing.AbstractButton
at javax.swing.AbstractButton
at javax.swing.DefaultButtonM
at javax.swing.DefaultButtonM
at javax.swing.plaf.basic.Bas
at java.awt.Component.process
at javax.swing.JComponent.pro
at java.awt.Component.process
at java.awt.Container.process
at java.awt.Component.dispatc
at java.awt.Container.dispatc
at java.awt.Component.dispatc
at java.awt.LightweightDispat
at java.awt.LightweightDispat
at java.awt.LightweightDispat
at java.awt.Container.dispatc
at java.awt.Component.dispatc
at java.awt.EventQueue.dispat
at java.awt.EventDispatchThre
at java.awt.EventDispatchThre
at java.awt.EventDispatchThre
at java.awt.EventDispatchThre
at java.awt.EventDispatchThre
at java.awt.EventDispatchThre
myApplet.java line 42:
myHelperClass.checkEvent()
ASKER
After rearranging some code, it turns out it is scope related. I was calling the class from an inline method through the addActionListener method and it was not able to find the myHelperClass class. I didn't expect this to be an issue because it works fine in the IDE but not as a standalone applet. Here is the faulty code:
eventButton.addActionListe ner(new ActionListener() {
public void actionPerformed(ActionEven t evt) {
myHelperClass.checkEvent() ;
}});
eventButton.addActionListe
public void actionPerformed(ActionEven
myHelperClass.checkEvent()
}});
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Yeah, that was exactly what I did. I'll give you the credit for helping me brainstorm through this problem.
:-)
jar tf myJar.jar