GlassFish服务器收到消息时出现java.lang.NoClassDefFoundError错误

使用eclipse火星和玻璃鱼,我已经制作了一个本地服务器。 在同一个包中,我有一个名为MyClass.java的类。 每次,服务器收到一条消息,我希望消息由MyClass(及其方法)处理。 这就是我所拥有的:

package com.MT; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.server.ServerEndpoint; @ServerEndpoint("/serverendpointdemo") public class ServerEndpointDemo { @OnOpen public void handleOpen () { System.out.println("JAVA: Client is now connected..."); } @OnMessage public String handleMessage (String message) { System.out.println("JAVA: Received from client: "+ message); MyClass x = new MyClass(); String replyMessage = x.someMethod(message); //System.out.println("JAVA: Send to Client ==> "+ replyMessage); // String replyMessage = "echo "+ message; // System.out.println("JAVA: Send to client: "+ replyMessage); return replyMessage; } @OnClose public void handleClose() { System.out.println("JAVA: Client is now disconnected..."); } @OnError public void handleError (Throwable t) { t.printStackTrace(); } } 

问题是编译器给了我这个消息:

 2015-10-26T22:36:37.088-0400|Severe: java.lang.NoClassDefFoundError: edu.someClass at com.MT.MyClass.(MedicalTranscriptRev4.java:35) at com.MT.ServerEndpointDemo.handleMessage(ServerEndpointDemo.java:20) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.glassfish.tyrus.core.AnnotatedEndpoint.callMethod(AnnotatedEndpoint.java:520) at org.glassfish.tyrus.core.AnnotatedEndpoint.access$100(AnnotatedEndpoint.java:87) at org.glassfish.tyrus.core.AnnotatedEndpoint$WholeHandler$1.onMessage(AnnotatedEndpoint.java:619) at org.glassfish.tyrus.core.TyrusSession.notifyMessageHandlers(TyrusSession.java:576) at org.glassfish.tyrus.core.TyrusEndpointWrapper.onMessage(TyrusEndpointWrapper.java:871) at org.glassfish.tyrus.core.TyrusWebSocket.onMessage(TyrusWebSocket.java:212) at org.glassfish.tyrus.core.frame.TextFrame.respond(TextFrame.java:139) at org.glassfish.tyrus.core.ProtocolHandler.process(ProtocolHandler.java:807) at org.glassfish.tyrus.core.TyrusWebSocketEngine$TyrusReadHandler.handle(TyrusWebSocketEngine.java:562) at org.glassfish.tyrus.servlet.TyrusHttpUpgradeHandler.onDataAvailable(TyrusHttpUpgradeHandler.java:173) at org.apache.catalina.connector.InputBuffer$ReadHandlerImpl.processDataAvailable(InputBuffer.java:488) at org.apache.catalina.connector.InputBuffer$ReadHandlerImpl.onDataAvailable(InputBuffer.java:453) at org.glassfish.grizzly.http.io.InputBuffer.invokeHandler(InputBuffer.java:1089) at org.glassfish.grizzly.http.io.InputBuffer.invokeHandlerOnProperThread(InputBuffer.java:1080) at org.glassfish.grizzly.http.io.InputBuffer.append(InputBuffer.java:963) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:271) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: edu.someClass at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1783) at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633) ... 36 more 

我确保外部JAR文件中的类edu.someClass在我的类路径中。 但它仍然无法正常工作。 任何想法?

问题是每次服务器获取新消息时都需要编译MyClass? 所以我做了一个虚拟类来测试它是否每次都编译它确实。 但是这个虚拟类没有任何JAR文件(也就是说,与MyClass相比,它没有import类)。

这是屏幕截图:

在此处输入图像描述