我有一个非常简单的REST API,它使用了2.x(Glassfish) . 当我什么都不做但输出你好世界字符串时,它工作 . 但是当我添加几个 jar 并在一行代码中使用它时,会抛出许多类 java.lang.NoClassDefFoundError 错误 . 我没有编译或语法错误 . 错误是很长的,所以如果我在其中提出了大量的垃圾,请原谅 .
我看到很多解决这个问题的方法,但我不明白他们的术语,例如你的类路径需要修复等 .
谁能告诉我如何添加一个在代码中导入的jar文件?
Code
package com.rest.example;
import java.io.File;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
import com.infineon.essence_210.api.Component;
import com.infineon.essence_210.api.EssenceDBMgr;
@Path("/testEssence") public class HelloWorld {
@GET
@Path("/{param}")
public Response getMsg(@PathParam("param") String msg){
String output = "Welcome to the world of Rest : "+msg;
Component comp = null;
File file = new File("C:\\MYFILE.xml");
try {
comp = EssenceDBMgr.getInstance().lookupComponent(file); //
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return Response.status(200).entity(output).build();
}
}
eclipse控制台出错(剪短但问你是否想要全部)
SEVERE:Servlet [exampleServlet]的Servlet.service()在路径[/ RestApi]的上下文中引发异常[org.glassfish.jersey.server.ContainerException:java.lang.NoClassDefFoundError:com / sun / xml / bind / marshaller / NamespacespacePrefixMapper],原因是java.lang.ClassNotFoundException:com.sun.xml.bind.marshaller.NamespacePrefixMapper,位于org.apache.catalina.loader的org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1320) . 位于org.apache的java.security.SecureClassLoader.defineClass(未知来源)的java.lang.ClassLoader.defineClass(未知来源)的java.lang.ClassLoader.defineClass1(本地方法)中的WebappClassLoader.loadClass(WebappClassLoader.java:1173)位于org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:880)的.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2477)org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java) :1290)在org.apache.catalina.loader.WebappClassLoader.load com.infineon上com.infineon.essence.jaxb.Unmarshaller.unmarshal(Unmarshaller.java:108)的com.infineon.com(Unmarshaller.java:88)上的类(WebappClassLoader.java:1173) .essence_210.api.Essence.unmarshal(Essence.java:201)at com.infineon.essence_210.api.Essence.unmarshal(Essence.java:223)at com.infineon.essence_210.api.Essence.unmarshal(Essence.java) :229)com.infineon.essence_210.api.Esi.Essence.EssenceDB上的com.infineon.essence_210.api.Essence . (Essence.java:80)com.infineon.essence_210.api.EssenceDBMgr.unmarshal(EssenceDBMgr.java:223) . .lookupComponent(EssenceDBMgr.java:1331)位于sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)的sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)的com.rest.example.HelloWorld.getMsg(HelloWorld.java:23)处 . 在org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory $ 1.in的java.lang.reflect.Method.invoke(未知来源)的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher $ 1.run(AbstractJavaResourceMethodDispatcher.java:144)的org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher)中的voke(ResourceMethodInvocationHandlerFactory.java:81) .java:161)org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider $ ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java :99)org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)org.glassfish的org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) . 在org.glfish.jersey.server.ServerRuntime $ 2.run(ServerRuntime.java:317)的org.gl上的jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)在org.glassfish.jersey.internal.Errors.process的org.glassfish.jersey.internal.Errors $ 1.call(Errors.java:267)上的assfish.jersey.internal.Errors $ 1.call(Errors.java:271) Ergs.java:315)org.glassfish.jersey.internal.Errors.process(Errors.java:297)org.glassfish.jersey.internal.Errors.process(Errors.java:267)org.glassfish.jersey位于org.glassfish.jersey.server.Server.Dunler.handle上的org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:298)的.process.internal.RequestScope.runInScope(RequestScope.java:317)(ApplicationHandler.java) :1154)org.glassfish.jersey.servet.WebComponent.serviceImpl(WebComponent.java:471)org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425)org.glassfish.jersey.servlet . ServletContainer.service(ServletContainer.java:383)atOrg.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336)位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter的org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223) ApplicationFilterChain.java:291)org.apache上的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)中的.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java) :219)org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)org.apache.catalina.core . org.apache.catalina.valve上的StandardHostValve.invoke(StandardHostValve.java:142)位于org.apache.catalina.valve.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)的s.ErrorReportValve.invoke(ErrorReportValve.java:79)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:534)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:658)org.apache.coyote.http11.Http11NioProtocol $ Http11ConnectionHandler.process(Http11NioProtocol.java:222)at org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1566) )atg.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1523)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecutor $ Worker.run (未知来源)org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java) :61)在java.lang.Thread.run(未知来源)