1

我正在使用 maven Maven Tomcat 8 插件在本地启动我的 tomcat 服务器并使用 intellij IDE 部署一个 war 文件。

出于某种原因,当我尝试使用 maven tomcat 8 插件启动它时,它显示以下堆栈跟踪并且没有起床。

n.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:483)
    at com.sun.xml.ws.api.server.AbstractInstanceResolver$1.run(AbstractInstanceResolver.java:84)
    at com.sun.xml.ws.api.server.AbstractInstanceResolver$1.run(AbstractInstanceResolver.java:78)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.xml.ws.api.server.AbstractInstanceResolver.invokeMethod(AbstractInstanceResolver.java:78)
    at com.sun.xml.ws.server.SingletonResolver.start(SingletonResolver.java:72)
    at com.sun.xml.ws.api.server.InstanceResolver$1.start(InstanceResolver.java:238)
    at com.sun.xml.ws.server.InvokerTube.setEndpoint(InvokerTube.java:83)
    at com.sun.xml.ws.server.WSEndpointImpl.<init>(WSEndpointImpl.java:205)
    at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:320)
    at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:315)
    at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:158)
    at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:577)
    at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:560)
    at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:303)
    at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:179)
    at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131)
    at com.sun.xml.ws.transport.http.servlet.WSServletContainerInitializer.onStartup(WSServletContainerInitializer.java:65)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5210)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:919)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1703)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

但是当我尝试使用单独的 tomcat 容器(不使用 maven tomcat 8 插件或不支持 IDE)时,一切正常。

我调查了发生这种情况是因为我的 war 文件中捆绑了一个库( spring-jersey3.jar )。当我从战争中删除它并尝试使用 maven tomcat 插件时,也一切正常。我发现这个错误发生是因为它试图在启动时初始化一个 spring 应用程序上下文。但只有当我尝试使用 maven tomcat 插件时才会发生这种情况。

无论如何,我的工作需要那个库。我不能把它排除在战争之外。

有谁知道解决这个问题的方法?它可能是

  • 配置在启动时禁用初始化 spring 应用程序上下文。
  • 配置 maven tomcat 8 插件以忽略该 lib 或 init 进程。
  • 或任何其他不排除 lib 的方法。
4

0 回答 0