我们有一个基于JNLP的webstart应用程序,它正在推出并与JRE 1.6,1.7 32位& 64位版本(操作系统:Windows 7企业版64位和应用程序服务器:Websphere 8.5.5)。关于JRE 1.8,应用程序使用64位JRE正常启动但未能使用32位JRE启动。 使用32位1.8 JRE,我们得到一个异常,即虽然Groovy 2.3.9 jar中存在特定类,但找不到其中一个groovy类。我还通过Java Cacher Viewer确认,当我们启动初始JNLP时,Groovy-all.jar成功下载到用户缓存文件夹(c:\ Users {userid} \ AppData \ LocalLow \ Sun \ Java)
以下是我们获得的异常的完整跟踪
Exception in thread "AWT-EventQueue-2" java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.runtime.InvokerHelper
at com.sbc.etm.expressions.groovy.RestrictedMetaClass.get(RestrictedMetaClass.java:40)
at com.sbc.etm.expressions.groovy.AbstractGroovyObject.<init>(AbstractGroovyObject.java:24)
at com.sbc.etm.expressions.groovy.GroovyExpressionObject.<init>(GroovyExpressionObject.java:62)
at ar8512_ETM_GroovyExpression_11.<init>(ar8512_ETM_GroovyExpression_11)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.sbc.etm.expressions.groovy.GroovyExpression.evaluateObject(GroovyExpression.java:205)
at com.sbc.etm.expressions.groovy.GroovyExpression.basicGetDataTypeAndValue(GroovyExpression.java:199)
at com.sbc.etm.expressions.Expression.getDataTypeAndValue(Expression.java:228)
at com.sbc.etm.expressions.Expression.getStringValue(Expression.java:610)
at com.sbc.etm.message.StringTemplate.evaluate(StringTemplate.java:280)
at com.sbc.etm.message.StringTemplate.bind(StringTemplate.java:229)
at com.sbc.etm.navigator.Node.getLabel(Node.java:195)
at com.sbc.etm.navigator.Folder.toString(Folder.java:804)
at javax.swing.DefaultListCellRenderer.getListCellRendererComponent(Unknown Source)
at com.sbc.etm.ui.framework.NodeBrowserRenderer.getListCellRendererComponent(NodeBrowserRenderer.java:61)
at javax.swing.plaf.basic.BasicComboBoxUI.getDisplaySize(Unknown Source)
at javax.swing.plaf.metal.MetalComboBoxUI.getMinimumSize(Unknown Source)
at javax.swing.plaf.basic.BasicComboBoxUI.getPreferredSize(Unknown Source)
at com.sbc.etm.ui.framework.lnf.metal.EtmMetalComboBoxUI.getPreferredSize(EtmMetalComboBoxUI.java:96)
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 com.sbc.etm.ui.framework.NodePathBrowser.updatePreferredSize(NodePathBrowser.java:111)
at com.sbc.etm.ui.framework.NodePathBrowser.<init>(NodePathBrowser.java:67)
at com.sbc.etm.ui.framework.BusinessView.<init>(BusinessView.java:358)
at com.sbc.etm.ui.framework.BusinessViewSpec.createBusinessView(BusinessViewSpec.java:186)
at com.sbc.etm.ui.framework.ETMClient.openBusinessView(ETMClient.java:524)
at com.sbc.etm.ui.framework.HomeBusinessView.open(HomeBusinessView.java:99)
at com.sbc.etm.ui.framework.ETMClient.openHomeBusinessView(ETMClient.java:546)
at com.sbc.etm.ui.framework.ETMClient.openETM(ETMClient.java:563)
at com.sbc.etm.ui.framework.ETMClient.access$300(ETMClient.java:46)
at com.sbc.etm.ui.framework.ETMClient$OpenETMRunnable.run(ETMClient.java:166)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)