2016-12-11 2 views
0

Я пытаюсь понять основные шаги развертывания приложения загрузки весной. Однако, несмотря на то, что я делаю все правильно, я не могу развернуть его на сервере tomcat. Кот успешно извлекает мой war архив, но он дает folloving ниже сообщение об ошибке:Исключение жизненного цикла при развертывании примера весеннего загрузочного приложения

11-Dec-2016 16:49:31.975 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/springrest]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:952) 
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1823) 
    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) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [[email protected]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) 
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4842) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4974) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 10 more 
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [[email protected]] 
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140) 
    at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:708) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 13 more 
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: invalid END header (bad central directory offset) 
    at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:113) 
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107) 
    ... 16 more 
Caused by: java.util.zip.ZipException: invalid END header (bad central directory offset) 
    at java.util.zip.ZipFile.open(Native Method) 
    at java.util.zip.ZipFile.<init>(ZipFile.java:219) 
    at java.util.zip.ZipFile.<init>(ZipFile.java:149) 
    at java.util.jar.JarFile.<init>(JarFile.java:166) 
    at java.util.jar.JarFile.<init>(JarFile.java:103) 
    at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:110) 
    ... 17 more 

11-Dec-2016 16:49:31.976 SEVERE [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive /home/bora/Desktop/apache-tomcat-8.5.9/webapps/springrest.war 
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/springrest]] 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:756) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:952) 
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1823) 
    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) 

Я думаю, что ошибка вызвана ZipException. Но я не понимаю, почему. Я следовал this и this направляющие, как точно так, как написано, но ...

Вот несколько файлов, может быть, это будет полезно: pom.xml:

<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>com.bora.test</groupId> 
    <artifactId>springrest</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.2.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-tomcat</artifactId> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.jayway.jsonpath</groupId> 
      <artifactId>json-path</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <properties> 
     <java.version>1.8</java.version> 
    </properties> 

    <!-- <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> --> 

    <repositories> 
     <repository> 
      <id>spring-releases</id> 
      <url>https://repo.spring.io/libs-release</url> 
     </repository> 
    </repositories> 

    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-releases</id> 
      <url>https://repo.spring.io/libs-release</url> 
     </pluginRepository> 
    </pluginRepositories> 

</project> 

И мой класс Application: пакет com.bora.rest;

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.boot.builder.SpringApplicationBuilder; 
import org.springframework.boot.web.support.SpringBootServletInitializer; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.bind.annotation.RequestMapping; 

@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
public class Application extends SpringBootServletInitializer { 

    private static Class<Application> applicationClass = Application.class; 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 
     // TODO Auto-generated method stub 
     return builder.sources(Application.class); 
    } 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

class GreetingController { 

    @RequestMapping("/") 
    String hello() { 
     return "Hello World"; 
    } 

} 

Я скомпилировать и упаковать мой Maven проект по mvn clean package и даю coppy в .war файл в папку WebApps моей Tomcat. Перезапустите tomcat, он извлекает, но ошибка выше. Я искал решение в течение примерно 2 часов, но ...

Моя версия tomcat - 8.5.9. Я использую Ubuntu 16.04. Переменные среды:

$CATALINA_BASE: /home/bora/Desktop/apache-tomcat-8.5.9 
$CATALINA_HOME: /home/bora/Desktop/apache-tomcat-8.5.9 
$CATALINA_TMPDIR: /home/bora/Desktop/apache-tomcat-8.5.9/temp 
$JRE_HOME:  /home/bora/Applications/jdk1.8.0_111 
$CLASSPATH:  /home/bora/Desktop/apache-tomcat-8.5.9/bin/bootstrap.jar:/home/bora/Desktop/apache-tomcat-8.5.9/bin/tomcat-juli.jar 

У меня есть сильные знания о языке Java, я разрабатываю приложения для Android. Однако я совершенно незнакома с технологиями Java EE. Если кто-то найдет ответ, не могли бы вы рассказать мне ответ, как вы говорите ребенку?

спасибо.

ответ

0

Spring-Boot ist использует Tomcat 7 по умолчанию. Это должно стать причиной исключения. Если и хотите использовать Tomcat 8.5.9 и есть, чтобы установить версию в вашем pom.xml:

<properties> 
    <tomcat.version>8.5.9</tomcat.version> 
</properties> 

EDIT

Используйте spring-boot-maven-plugin для создания приложения. Поэтому вы не можете быть уверены, что ваше приложение правильно построено.

EDIT 2

Просто аннотировать класс с @SpringBootApplication этого достаточно. вам не нужны другие.

EDIT 3

После компиляции кода с моими указанных изменений это worket хорошо. Поэтому проблема должна быть вашей конфигурацией. Очистите локальный maven-репозиторий и повторно загрузите библиотеки. Это должно сработать.

+0

Хм. Я добавил то, что вы сказали, но у меня все те же исключения. – Bora

+0

Ах и измените свою аннотацию. См. Редактировать 2 – Daniel

+0

Ненавижу говорить, но все равно ... спасибо за ваши усилия. – Bora

0

Кажется, конфликт версии, пожалуйста, проверьте скомпилированную версию и версию JVM версии Tomcat.

  1. Pls проверить JAVA_HOME
  2. Проверьте версию Tomcat, чтобы построить.Перейдите по ссылке: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html

  3. Проверьте версию Java для создания: http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-build-systems.html

Надежда эта помощь.

+0

Я использую Java 1.8. Я думаю, все должно быть хорошо. И tomcat 8.5.9 поддерживает java 1.8. – Bora

+0

Вы можете проверить свою версию java с комментарием: java -version ?! если он установлен с Java8, можете ли вы попробовать загрузить новый Tomcat и повторить попытку ?! –

Смежные вопросы