2017-03-09 110 views
0

我有一個Maven的春季啓動應用程序,我成功打包了Intellij的戰爭文件。爲測試我運行碼頭本地並把war文件webapps目錄中,但我得到這個錯誤:碼頭無法啓動戰爭文件

/hallo ---> [email protected]{/hallo,[file:///C:/Users/ricardo/AppData/Local/Temp/jetty-0.0.0.0-8080-hallo.war-_hallo-any-3522993186615732718.dir/webapp/, jar:file:///C:/Users/ricardo/AppData/Local/Temp/jetty-0.0.0.0-8080-hallo.war-_hallo-any-3522993186615732718.dir/webapp/WEB-INF/lib/jquery-3.1.1.jar!/META-INF/resources, jar:file:///C:/Users/ricardo/AppData/Local/Temp/jetty-0.0.0.0-8080-hallo.war-_hallo-any-3522993186615732718.dir/webapp/WEB-INF/lib/bootstrap-3.3.7.jar!/META-INF/resources, jar:file:///C:/Users/ricardo/AppData/Local/Temp/jetty-0.0.0.0-8080-hallo.war-_hallo-any-3522993186615732718.dir/webapp/WEB-INF/lib/bootstrap-3.3.7-1.jar!/META-INF/resources],UNAVAILABLE}{C:\Users\ricardo\Desktop\New folder\webapps\hallo.war} [failed]

的名稱現在是hallo.war。我的bootstrap jar有問題嗎?這是我的pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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.example</groupId> 
<artifactId>demoshop</artifactId> 
<version>0.1.0</version> 
<packaging>war</packaging> 

<name>demoshop</name> 
<description>tool</description> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.1.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
</properties> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>com.amazonaws</groupId> 
      <artifactId>aws-java-sdk-bom</artifactId> 
      <version>1.11.22</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-test</artifactId> 
     <version>4.1.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>aws-java-sdk-route53</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.thymeleaf.extras</groupId> 
     <artifactId>thymeleaf-extras-springsecurity4</artifactId> 
     <version>2.1.2.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.webjars</groupId> 
     <artifactId>bootstrap</artifactId> 
     <version>3.3.7-1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.webjars</groupId> 
     <artifactId>jquery</artifactId> 
     <version>3.1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok</artifactId> 
     <version>1.16.10</version> 
     <scope>compile</scope> 
    </dependency> 
</dependencies> 

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

如果您需要了解更多信息,我可以提供。

UPDATE 14-03:我有一個錯誤,而啓動戰爭文件:

2017-03-14 12:05:59.772 INFO 6184 --- [ Scanner-0] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [class org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$344f3674] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2017-03-14 10:03:51.288 INFO 4468 --- [ main] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]

2017-03-14 10:03:51.291 INFO 4468 --- [
main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'errorPageFilter' to: [/*]

2017-03-14 10:03:51.292 INFO 4468 --- [
main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/] 2017-03-14 10:03:51.292 INFO 4468 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/]

2017-03-14 10:03:51.292 INFO 4468 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/] 2017-03-14 10:03:51.293 INFO 4468 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/]

2017-03-14 10:03:51.402 WARN 4468 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Tomcat.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.tomcat.jdbc.pool.DataSource]: Factory method 'dataSource' threw exception; nested exception is java.util.ServiceConfigurationError: org.apache.juli.logging.Log: Provider org.eclipse.jetty.apache.jsp.JuliLog not a subtype

2017-03-14 10:03:51.411 INFO 4468 --- [ main] utoConfigurationReportLoggingInitializer :

UPADTE的pom.xml:

<dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-tomcat</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>org.apache.tomcat.embed</groupId> 
        <artifactId>tomcat-embed-el</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-jetty</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>com.h2database</groupId> 
      <artifactId>h2</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>bootstrap</artifactId> 
      <version>3.3.7-1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>jquery</artifactId> 
      <version>3.1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.projectlombok</groupId> 
      <artifactId>lombok</artifactId> 
      <version>1.16.10</version> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.json</groupId> 
      <artifactId>json</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>webjars-locator</artifactId> 
      <version>0.30</version> 
     </dependency> 
    </dependencies> 

enter image description here

+0

*我成功打包了一個來自Intellij的戰爭文件。*您是如何準確地創建戰爭的?你應該使用maven而不是從IntelliJ導出。 –

+0

我在命令行mvn和IntelliJ中都使用了它們,但都具有相同的結果。命令:mvn compile package war:war –

+0

應該有更多的日誌表明它失敗的原因,異常或消息。 –

回答

0

我在我的應用程序,以與碼頭戰爭文件的工作發生了變化:

與導向中的應用類:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html

@SpringBootApplication 
public class Application extends SpringBootServletInitializer { 

@Override 
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
    return application.sources(Application.class); 
    } 

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

} 

而且很多的幫助下,我包括在我的POM文件如下:

<packaging>war</packaging> 

<properties> 
    <jetty.version>9.1.0.v20131115</jetty.version> 
    <servlet-api.version>3.1.0</servlet-api.version> 
</properties> 

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-tomcat</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-tomcat</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>tomcat-juli</artifactId> 
     <version>9.0.0.M17</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.webjars</groupId> 
     <artifactId>webjars-locator</artifactId> 
     <version>0.30</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-jetty</artifactId> 
    </dependency> 

謝謝所有幫助。

0

你並不需要如果您使用的是Web依賴關係,請部署Spring Boot應用程序,它會自動爲您嵌入Tomcat,以及所有依賴關係。使用jar包,你可以直接使用Java運行:Java的罐子yourapp.java

+0

只有我們公司使用碼頭和戰爭文件來部署應用程序,我應該改變依賴關係嗎? –

+0

checkout section 85.1 here:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file也許你錯過了一個步驟。 –

+0

好吧我試過,但他不喜歡引導和jQuery的依賴 –

2

您可以排除默認的Tomcat從罐嵌入式這樣

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-tomcat</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.apache.tomcat.embed</groupId> 
       <artifactId>tomcat-embed-el</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

那麼你應該包括碼頭

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-jetty</artifactId> 
    </dependency> 

運行應用程序使用mvn spring-boot:運行 希望這會有所幫助。

+0

在intelij中運行它工作正常只有碼頭在更新中仍然有相同的錯誤 –

+0

您必須從應用程序戰爭中「排除」tomcat,然後將war部署到webapps文件夾。 org.springframework.boot 彈簧引導起動tomcat的 提供

+0

我無法設置範圍在排除,但它給了同樣的錯誤,如果我把它放在POM文件 –

1

從春天啓動文檔 - Create a deployable war file

你需要這樣的事情,如果你想要的應用程序服務器上運行

@SpringBootApplication 
public class Application extends SpringBootServletInitializer { 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(Application.class); 
    } 

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

} 
+0

是的,我這樣做^^ –

+0

我需要有一個數據庫的路徑,因爲它是一個h2數據庫,我認爲數據庫不會在戰爭文件中? –

+0

也許嘗試使用h2內存模式 –