2015-09-05 127 views
1

大家好!我最近部署了一個Web項目,並且在嘗試獲取單例類的實例時遇到了NoClassDefFoundError。NoClassDefFoundError Singletonholder

com.vaadin.server.ServerRpcManager $ RpcInvocationException:無法在 com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java調用方法單擊 com.vaadin.shared.ui.button.ButtonServerRpc: 170) 在 com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118) 在 com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:287) 在 com.vaadin.server .communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:180) at com.vaadin .server.communication.PushHandler $ 3.run(PushHandler.java:174) 在 com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:253) 在 com.vaadin.server.communication.PushHandler。訪問$ 200(PushHandler.java:56) at com.vaadin.server.communication.PushHandler $ 1.onRequest(PushHandler.java:76) at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:174) 在 org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:95) 在 org.atmosphere.container.GlassFishServ30WebSocketSupport.service(GlassFishServ30WebSocketSupport.java:60) 在 org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1802) 在 org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:432) 在 org.atmosphere.websocket.DefaultWebSocketProcessor $ 2.run (DefaultWebSocketProcessor.java:285) 在 org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101) 在 org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:280) 在 有機atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:303) at org.atmosphere.container.GlassFishServ30WebSocketSupport $ Grizzly2WebSocketApplication.onMessage(GlassFishServ30WebSocketSupport.java:157) 在 org.glassfish.grizzly.websockets.SimpleWebSocket.onMessage(SimpleWebSocket.java:163) 在 org.glassfish.grizzly.websockets .frametypes.TextFrameType.respond(TextFrameType.java:68) 在 org.glassfish.grizzly.websockets.DataFrame.respond(DataFrame.java:119) 在 org.glassfish.grizzly.websockets.BaseWebSocketFilter.handleRead(BaseWebSocketFilter .java:219) at org.glassfish.grizzly.filterchain.ExecutorResolver $ 9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.fi lterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain。的java:133) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 在 org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor。的java:77) 在 org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) 在 org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access $ 100(WorkerThreadIOStrategy.java:56) 在 org.glassfish.grizzly。策略.WorkerThreadIOStrategy $ WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:565 ) at org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:545) at java.lang.Thread.run(Thread.java:745)引起: java.lang.reflect。是java的InvocationTargetException處 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) .lang.reflect.Method.invoke(Method.java:497)at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:168) ... 35 more引起者: com.vaadin.event.ListenerMet hod $ MethodException:調用方法 buttonClick在 no.solarsoft.venus2.admissionweb2.presentation.components.wizard.contentparts.PaymentPanel $ 2 失敗。在 com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:528) at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:198)at com.vaadin.event.EventRouter.fireEvent(EventRouter。 java:161)at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:979) at com.vaadin.ui.Button.fireClick(Button.java:393)at com.vaadin.ui.Button $ 1 .click(Button.java:57)... 40更多原因: java.lang.ExceptionInInitializerError at no.solarsoft.venus2.payex.wsclient.PxOrderManager.getInstance(PxOrderManager.java:54) at no。 solarsoft.venus2.admissionweb2.payment.payex.AbstractPayExHelper.initializeOrder(AbstractPayExHelper.java:60) 在 no.solarsoft.venus2.admissionweb2.payment.payex.PayExCreditCardHelper.initializeOrder(PayExCreditCardHelper.java:60) 在 no.solarsoft.venus2.admissionweb2.presentation.view.ApplicationWizardView $ PaymentPanelModelPropertyChangeListener.propertyChange(ApplicationWizardView.java: 1599) 在 java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335) 在 java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327) 在 no.solarsoft.venus2.admissionweb2.presentation.components .wizard.content.model.PaymentPanelModel.createCreditCardPaymentEvent(PaymentPanelModel.java:210) at no.solarsoft.venus2.admis sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:497)在 com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java :508) ... 45更多引起:java.lang。IllegalStateException異常:MASM0001: 缺省配置文件[JAXWS-管-default.xml中]在 com.sun.xml.ws.assembler.MetroConfigLoader.init(MetroConfigLoader.java:142) 未找到 在 的com.sun。 xml.ws.assembler.MetroConfigLoader。(MetroConfigLoader.java:119) 在 com.sun.xml.ws.assembler.TubelineAssemblyController.getTubeCreators(TubelineAssemblyController.java:93) 在 com.sun.xml.ws.assembler .MetroTubelineAssembler.createClient(MetroTubelineAssembler.java:118) at com.sun.xml.ws.client.Stub.createPipeline(Stub.java:343)at com.sun.xml.ws.client.Stub。(Stub。 java:310)at com.sun.xml.ws.client.Stub。(Stub.java:243 )在在 的com.sun com.sun.xml.ws.client.Stub。(Stub.java:258)在 com.sun.xml.ws.client.sei.SEIStub。(SEIStub.java:98) .xml.ws.client.WSServiceDelegate.getStubHandler在 com.sun.xml.ws在 com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:818)(WSServiceDelegate.java:829) .client.WSServiceDelegate.getPort在 com.sun.xml.ws.client.WSServiceDelegate在 com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:419)(WSServiceDelegate.java:451) .getPort(WSServiceDelegate.java:401) 在javax.xml.ws.Service.getPort(Service.java:134)在 共m.payex.external.pxorder.PxOrder.getPxOrderSoap(PxOrder.java:83)at no.solarsoft.venus2.payex.wsclient.PxOrderManager.init(PxOrderManager.java:60) at no.solarsoft.venus2.payex .wsclient.PxOrderManager(PxOrderManager.java:46) 在 no.solarsoft.venus2.payex.wsclient.PxOrderManager。(PxOrderManager.java:45) 在 no.solarsoft.venus2.payex.wsclient.PxOrderManager $ PxOrderManagerSingletonHolder (PxOrderManager.java:50) ... 58更多]

[2015-09-05T09:30:09.061+0200] [glassfish 4.1] [SEVERE] [] [] [tid: 
_ThreadID=35 _ThreadName=Thread-9] [timeMillis: 1441438209061] [levelValue: 1000] [[ 

no.solarsoft.venus2.admissionweb2.CustomNavigator $ InitializationException: ViewInitializer不能爲視圖命名爲「stdError」中找到。在 no.solarsoft.venus2.admissionweb2.CustomNavigator.initView(CustomNavigator.java:91) 在 no.solarsoft.venus2.admissionweb2.CustomNavigator.navigateTo(CustomNavigator.java:123) 在 no.solarsoft.venus2。 admissionweb2.AdmissionWebUI $。錯誤(AdmissionWebUI.java:211) 在 com.vaadin.server.LegacyCommunicationManager.handleConnectorRelatedException(LegacyCommunicationManager.java:397) 在 com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java :290) at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:180) at com.vaadin .server.communication.PushHandler $ 3.run(PushHandler.java:174) 在 com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:253) 在 com.vaadin.server.communication.PushHandler。訪問$ 200(PushHandler.java:56) at com.vaadin.server.communication.PushHandler $ 1.onRequest(PushHandler.java:76) at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:174) at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:95) at org.atmosphere.container.GlassFishServ30WebSocketSupport。服務(GlassFishServ30WebSocketSupport.java:60) 在 org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1802) 在 org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:432) 在 有機.atmosphere.websocket.DefaultWebSocketProcessor $ 2.run(DefaultWebSocketProcessor.java:285) 在 org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101) 在 org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor。 java:280) at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProc essor.java:303) 在 org.atmosphere.container.GlassFishServ30WebSocketSupport $ Grizzly2WebSocketApplication.onMessage(GlassFishServ30WebSocketSupport.java:157) 在 org.glassfish.grizzly.websockets.SimpleWebSocket.onMessage(SimpleWebSocket.java:163) 在 org.glassfish.grizzly.websockets.frametypes.TextFrameType.respond(TextFrameType.java:68) 在 org.glassfish.grizzly.websockets.DataFrame.respond(DataFrame.java:119) 在 org.glassfish.grizzly .websockets.BaseWebSocketFilter.handleRead(BaseWebSocketFilter.java:219) at org.glassfish.grizzly.filterchain.ExecutorResolver $ 9.execute(ExecutorResolver.java:119) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 在 org.glassfish.grizzly .filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 在 org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java :77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 在 org.glassfish.grizzly.strategies .WorkerThreadIOStrategy.access在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy $ WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) $ 100(WorkerThreadIOStrategy.java:56) 在 org.glassfish.grizzly.threadpool.AbstractThreadPool $工人。 doWork(AbstractThreadPool.java:565) at org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:545) at java.lang.Thread.run(Thread.java :745)]]

這裏是我的PxOrderManager的代碼:

package no.solarsoft.venus2.payex.wsclient; 

import java.net.MalformedURLException; 
import java.net.URL; 

import javax.xml.namespace.QName; 

import org.apache.log4j.LogManager; 
import org.apache.log4j.Logger; 

import no.solarsoft.venus2.admissionweb2.AdmissionWebUI; 
import no.solarsoft.venus2.admissionweb2.AdmissionWebUI.RuntimeMode; 

import com.payex.external.pxorder.PxOrder; 
import com.payex.external.pxorder.PxOrderSoap; 

public class PxOrderManager { 

    private static final QName SERVICE_NAME = new QName("http://external.payex.com/PxOrder/", "PxOrder"); 
    private static final String TEST_WSDL_LOCATION_STRING = "https://test-external.payex.com/pxorder/pxorder.asmx?WSDL"; 
    private static final String WSDL_LOCATION_STRING = "https://external.payex.com/pxorder/pxorder.asmx?WSDL"; 
    private static final URL WSDL_LOCATION; 

    private static final Logger log = LogManager.getLogger(PxOrderManager.class); 

    // This initializes WSDL location. !!! USE TEST_WSDL_LOCATION_STRING for 
    // testing against test web services. 
    static { 
     URL url = null; 
     String urlString = null; 
     try { 
      urlString = AdmissionWebUI.RUNTIME_MODE.equals(RuntimeMode.PRODUCTION) ? WSDL_LOCATION_STRING 
        : TEST_WSDL_LOCATION_STRING; 
      url = new URL(urlString); 
     } catch (MalformedURLException e) { 
      java.util.logging.Logger.getLogger(PxOrder.class.getName()).log(java.util.logging.Level.INFO, 
        "Can not initialize the default wsdl from {0}", urlString); 
     } 
     WSDL_LOCATION = url; 
    } 

    private PxOrder service; 
    private PxOrderSoap port; 

    private PxOrderManager() { 
     init(WSDL_LOCATION); 
    } 

    private static class PxOrderManagerSingletonHolder { 
     public static final PxOrderManager INSTANCE = new PxOrderManager(); 
    } 

    public static PxOrderManager getInstance() { 
     return PxOrderManagerSingletonHolder.INSTANCE; 
    } 

    private void init(URL wsdlUrl) { 
     log.info("Initializing web service with wsdl location at: " + wsdlUrl.toString()); 
     service = new PxOrder(wsdlUrl, SERVICE_NAME); 
     port = service.getPxOrderSoap(); 
    } 

    public PxOrderSoap getPort() { 
     return this.port; 
    } 
} 

我試圖檢查我war文件的內容,並顯示正常。這些類PxOrderManagerSingletonHolderPxOrderManager存在

enter image description here

jar文件的所有都在web-inf/lib文件夾中。我使用vaadin 7和jdk 1.6.0_45(如果有幫助)

我希望有人能幫助我。謝謝!

回答

1

我認爲你的問題是在不同的地方(不是NoClassDefFoundError)。在棧跟蹤是這樣的信息:

所致:java.lang.IllegalStateException:MASM0001:默認配置文件[JAXWS-管-default.xml中]未發現

溶液描述here at SO

編輯:

此外,考慮Java版本升級將是一件好事。 Vaadin Book說:

Vaadin兼容Java 1.6及更高版本。使用WebSockets進行正確的服務器推送支持需要Java EE 7。

+0

謝謝!我剛發現問題在不同的地方。有這種氛圍和推動破壞代碼的東西。 – triForce420