首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Tomcat 8上部署web服务时出错

在Tomcat 8上部署web服务时出错
EN

Stack Overflow用户
提问于 2016-01-22 08:57:44
回答 1查看 1.2K关注 0票数 0

我编写了一个maven web服务,它引用了另一个项目。web服务本身只包含两个pom条目:

  1. 泽西-容器-servlet: 2.13
  2. 本地项目(项目1)

web服务POM:

代码语言:javascript
复制
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Webservice</groupId>
  <artifactId>Webservice</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <sourceDirectory>src/main/java</sourceDirectory>
    <plugins>

      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
            <configuration>
                <path>/Webservice</path>
                <update>true</update>
                <url>http://server.name:8080/manager/text</url>
                <username>tomcat</username>
                <password>tomcat</password>
            </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.13</version>
    </dependency> 
        <dependency>
            <groupId>lu.group.id</groupId>
            <artifactId>Project1</artifactId>
            <version>4.0.1</version>
        </dependency>
  </dependencies> 
</project>

项目1,也是一个maven项目,只有一个pom条目,另一个本机项目(让我们称之为Project 2)。

项目2还是一个maven项目,它的pom文件包含5个条目:

  1. 朗-猜: 0.0.7
  2. 斯坦福-corenlp: 3.5.2
  3. 斯坦福-corenlp: 3.5.2 :模型
  4. mysql连接器-java: 5.1.34
  5. 语文-de: 3.0

Web服务在Eclipse中本地安装的Tomcat 8上运行得很好。但是,当我从Eclipse (War文件)导出web服务并将其部署到Tomcat服务器上时,当我尝试运行web服务时,我会收到一个java.lang.NoClassDefFoundError。我已经在网上找到了几样东西:

  1. 在建造战争之前清理这个项目
  2. Maven更新
  3. 将tomcat服务器的%classpath%设置为项目根目录
  4. 将项目1和项目2中的两个jars添加到tomcat/lib中
  5. 从web服务中删除所有jars并部署一个不正确的(notrunning)项目(通常我应该得到一个ClassNotFoundExeception或类似的?)
  6. 将项目1添加到Eclipse中的部署程序集

此外,我已经阅读并尝试了许多关于堆栈溢出问题的解决方案:

总之,没有工作,错误java.lang.NoClassDefFoundError持续存在.我不知道还能做些什么,所以我很高兴能得到任何帮助!(预先谢谢:)

提到能力可能是服务器信息:

  • Tomcat版本: 8.0.30
  • JVM版本: 1.8.0_66-b17
  • 操作系统: Linus (Ubuntu)

此外,我还编写了另外两个maven web服务,成功地在此服务器上运行!所以我认为不可能是服务器配置问题吗?

完整堆栈跟踪如下:

代码语言:javascript
复制
java.lang.NoClassDefFoundError: Could not initialize class org.jvnet.hk2.internal.ServiceLocatorImpl
    org.jvnet.hk2.external.generator.ServiceLocatorGeneratorImpl.initialize(ServiceLocatorGeneratorImpl.java:67)
    org.jvnet.hk2.external.generator.ServiceLocatorGeneratorImpl.create(ServiceLocatorGeneratorImpl.java:102)
    org.glassfish.hk2.internal.ServiceLocatorFactoryImpl.internalCreate(ServiceLocatorFactoryImpl.java:270)
    org.glassfish.hk2.internal.ServiceLocatorFactoryImpl.create(ServiceLocatorFactoryImpl.java:230)
    org.glassfish.jersey.internal.inject.Injections._createLocator(Injections.java:138)
    org.glassfish.jersey.internal.inject.Injections.createLocator(Injections.java:123)
    org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:304)
    org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:285)
    org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)

更新:由于我仍然没有找到解决方案,我只是复制粘贴的项目1和项目2到我的web服务。web服务在本地主机Tomcat上仍然运行良好,但在Tomcat上仍然是同样的垃圾NoClassDefFoundError错误。现在我真的没什么主意了。

EN

回答 1

Stack Overflow用户

发布于 2016-01-26 10:28:41

我解决了我的问题。不要问我它是什么,我只是从零开始,复制粘贴我在新的网络项目中一个一个的内容,通过导出war文件,它在第一次尝试就像一个魅力…

不管怎样,非常感谢你的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34942606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档