【问题标题】:Not able to Start SpringBoot app from Linux Machine无法从 Linux 机器启动 Spring Boot 应用程序
【发布时间】:2017-01-06 14:37:18
【问题描述】:

我正在尝试将 SpringBoot 应用程序作为 jar 从 Linux 机器启动,但我收到以下错误,其中 jar 在 Windows 机器上运行良好,

我正在使用 Java 1.8 版和带有 1.3.6.RELEASE 的 spring-boot-dependencies。

12:03:16.266 [localhost-startStop-1] ERROR o.a.c.c.C.[.[localhost].[/myapp] - Exception sending context initialized event to listener instance of class org.apache.tomcat.websocket.server.WsContextListener 
java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
    at org.apache.tomcat.websocket.server.WsServerContainer.(WsServerContainer.java:149)
    at org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131)
    at org.apache.tomcat.websocket.server.WsContextListener.contextInitialized(WsContextListener.java:39)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
    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)
12:03:16.288 [localhost-startStop-1] ERROR o.a.catalina.core.StandardContext - One or more listeners failed to start. Full details will be found in the appropriate container log file 
12:03:25.928 [localhost-startStop-1] INFO  o.a.c.util.SessionIdGeneratorBase - Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [9,636] milliseconds. 
12:03:25.932 [localhost-startStop-1] ERROR o.a.catalina.core.StandardContext - Context [/myapp] startup failed due to previous errors 
 <properties>
    <start-class>com.myapp.Application</start-class>
    <camunda.version>7.4.0</camunda.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <failOnMissingWebXml>false</failOnMissingWebXml>
    <camunda.version>7.4.0</camunda.version>
    <org.springframework.version>4.2.6.RELEASE</org.springframework.version>
    <java.version>1.8</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>


<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.3.6.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mockftpserver</groupId>
        <artifactId>MockFtpServer</artifactId>
        <version>2.4</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- http://mvnrepository.com/artifact/org.springframework/spring-test -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.integration</groupId>
        <artifactId>spring-integration-ftp</artifactId>
    </dependency>

    <dependency>
        <groupId>org.camunda.bpm.extension</groupId>
        <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
        <version>1.1.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
    </dependency>

    <dependency>
        <groupId>org.camunda.bpm.identity</groupId>
        <artifactId>camunda-identity-ldap</artifactId>
        <version>${camunda.version}</version>
    </dependency>

    <dependency>
        <groupId>org.camunda.bpm</groupId>
        <artifactId>camunda-engine-rest</artifactId>
        <version>${camunda.version}</version>
        <classifier>classes</classifier>
    </dependency>

    <dependency>
        <groupId>net.sourceforge.jtds</groupId>
        <artifactId>jtds</artifactId>
        <version>1.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>2.4.6</version>
    </dependency>

    <dependency>
        <!-- AssertJ Testing Library -->
        <groupId>org.camunda.bpm.extension</groupId>
        <artifactId>camunda-bpm-assert</artifactId>
        <version>1.2</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>


    <dependency>
        <!-- Used to generate test coverage reports, see https://github.com/camunda/camunda-consulting/tree/master/snippets/process-test-coverage -->
        <groupId>org.camunda.consulting.snippets</groupId>
        <artifactId>process-test-coverage</artifactId>
        <version>0.2.3</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>javax.ejb</groupId>
        <artifactId>javax.ejb-api</artifactId>
        <version>3.2</version>
    </dependency>


    <dependency>
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-aspects</artifactId>
        <version>0.22.4</version>
    </dependency>

    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.7</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-email</artifactId>
        <version>1.4</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.uuid</groupId>
        <artifactId>java-uuid-generator</artifactId>
        <scope>provided</scope>
        <version>3.1.2</version>
    </dependency>

    <!-- Required to use Spin dataformat support in unit tests -->
    <dependency>
        <groupId>org.camunda.spin</groupId>
        <artifactId>camunda-spin-dataformat-all</artifactId>
        <version>1.2.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.camunda.bpm</groupId>
        <artifactId>camunda-engine-plugin-spin</artifactId>
        <version>${camunda.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.camunda.bpm</groupId>
        <artifactId>camunda-engine-plugin-connect</artifactId>
        <version>${camunda.version}</version>
    </dependency>
    <!-- DLI -->
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0</version>
    </dependency>

</dependencies>

<repositories>
    <repository>
        <id>camunda-bpm-nexus</id>
        <name>Camunda BPM Maven Repository</name>
        <url>https://app.camunda.com/nexus/content/groups/public</url>
    </repository>
</repositories>

<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <!-- Following plugin executes the testng tests -->
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.14.1</version>
            <configuration>
                <!-- Suite testng xml file to consider for test execution -->
                <suiteXmlFiles>
                    <suiteXmlFile>testng.xml</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin> 
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.3.6.RELEASE</version>
            <configuration>
                <mainClass>${start-class}</mainClass>
                <layout>ZIP</layout>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

请告诉我为什么我会遇到这个问题。请找到使用的依赖项的屏幕截图,

[![Dependencies][1]][1]
[![Dependencies2][2]][2]
[![Dependencies3][3]][3]

  [1]: http://i.stack.imgur.com/6mqr8.jpg
  [2]: http://i.stack.imgur.com/ybBmS.jpg
  [3]: http://i.stack.imgur.com/RveD5.jpg

【问题讨论】:

  • 似乎您的类路径中没有 Servlet 3.0 规范。如果有另一个更旧的 servlet-spec 潜伏在周围,检查你的依赖关系也许是个好主意......
  • 您能补充更多信息吗?命令,您使用。依赖项(pom.xml 或其他)。
  • 我已经添加了我的 pom.xml 依赖项并且 servlet 版本是 3.0.1 ,请让我知道为什么我会遇到这个问题,我想知道它只发生在 Linux 而不是 Windows 中。

标签: spring spring-boot tomcat8


【解决方案1】:

引用春天website

该设置不允许您使用如上所述的属性覆盖单个依赖项。要获得相同的结果,您需要在项目的 dependencyManagement 中添加一个条目,然后再添加 spring-boot-dependencies 条目。例如,要升级到另一个 Spring Data 发布火车,您需要将以下内容添加到您的 pom.xml。

我认为 servlet 容器没有正确导入。可以使用STS或者其他IDE查看maven依赖管理图吗?如果你能通过它会很有帮助。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-05-10
  • 2020-08-04
  • 1970-01-01
  • 1970-01-01
  • 2018-08-17
  • 1970-01-01
相关资源
最近更新 更多