Java 在Tomcat 8上部署web服务时遇到问题

Java 在Tomcat 8上部署web服务时遇到问题,java,web-services,tomcat,Java,Web Services,Tomcat,我编写了一个maven web服务,它引用了另一个项目。web服务本身仅包含2个pom条目: jersey容器servlet:2.13 本地项目(项目1) web服务POM: <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

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

  • jersey容器servlet:2.13
  • 本地项目(项目1)
  • web服务POM:

    <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和项目2复制到我的web服务中。web服务在本地主机Tomcat上仍然运行良好,但在Tomcat服务器上仍然是相同的垃圾
    NoClassDefFoundError
    error。。。现在我真的没有主意了。

    我解决了我的问题。不要问我它是什么,我只是从零开始,在新的web项目中一个接一个地复制粘贴我的内容,然后导出war文件,第一次尝试时它就像一个魔咒一样工作


    无论如何,非常感谢您的帮助。

    您能否使用命令行成功构建*.WAR文件,例如使用
    mvn clean package
    ?您好。不,它给了我一个错误,说它找不到罐子。但是,它引用了一个旧jar“Project1:0.0.1-SNAPSHOT”。然而,我将它重命名为
    “4.0.1,lu.group.id project1
    。为什么他不知道,在重命名后清理、更新maven?我如何让maven明白这一点?我发现了如何告诉maven在这里找到jar[.使用您的命令
    mvn clean package
    ,构建现在是成功的,但不幸的是它没有解决问题…相同的错误
    java.lang.NoClassDefFoundError
    …还有其他想法吗?我现在在这里解释的过程中也尝试过。但是,结果仍然与通过右键单击pr导出战争相同项目-->导出-->War文件。
    java.lang.NoClassDefFoundError
    …这肯定不是最佳实践解决方案,但您可以简单地将提供类
    org.jvnet.hk2.internal.ServiceLocatorImpl
    的依赖项添加到第二个pom.xml中。
    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)