2016-03-01 62 views
4

我想部署一個簡單的Spring Boot web應用程序到Pivotal Cloud Foundry,但是當我執行一個cf push時,我在日誌中看到下面的錯誤Spring Boot - java.lang.ClassNotFoundException:org.springframework.context.ApplicationContextInitializer

java.lang.ClassNotFoundException: org.springframework.context.ApplicationContextInitializer 

這裏是我的pom.xml

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.0.BUILD-SNAPSHOT</version> 
    <relativePath /> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.7</java.version> 
</properties> 

<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>org.springframework</groupId> 
     <artifactId>spring-webmvc-portlet</artifactId> 
    </dependency> 
</dependencies> 

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

<repositories> 
    <repository> 
     <id>spring-snapshots</id> 
     <name>Spring Snapshots</name> 
     <url>https://repo.spring.io/snapshot</url> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
    <repository> 
     <id>spring-milestones</id> 
     <name>Spring Milestones</name> 
     <url>https://repo.spring.io/milestone</url> 
     <snapshots> 
      <enabled>false</enabled> 
     </snapshots> 
    </repository> 
</repositories> 
<pluginRepositories> 
    <pluginRepository> 
     <id>spring-snapshots</id> 
     <name>Spring Snapshots</name> 
     <url>https://repo.spring.io/snapshot</url> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </pluginRepository> 
    <pluginRepository> 
     <id>spring-milestones</id> 
     <name>Spring Milestones</name> 
     <url>https://repo.spring.io/milestone</url> 
     <snapshots> 
      <enabled>false</enabled> 
     </snapshots> 
    </pluginRepository> 
</pluginRepositories> 

相同的應用程序被部署在我的本地主機和我沒有任何問題,建立了戰爭。對此有何想法?

+0

看起來你可能想嘗試在沒有tomcat的情況下使用胖jar來進行部署。 Portlet依賴關係有點困惑。它是一個portlet嗎? – code

+8

這是CloudFoundry的Java buildpack的當前侷限性。由於Spring Boot可執行文件的佈局變化,它還不支持Spring Boot 1.4:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4.0-M1-關於release-notes#可執行-JAR佈局。使用Spring Boot 1.3.3.RELEASE將暫時避免此問題。 –

回答

0

由於SSL握手異常,似乎在jar版本期間沒有下載jar。出於某種原因,儘管遺失了罐子,但我的構建並未失敗。通過在mvn乾淨安裝過程中啓用調試發現此問題

6

由於Andy Wilkinson指出,這是Spring Boot 1.4和java_buildpack之間不匹配的問題。它可以通過明確提及java_buildpack的URL來解決:

$ cf push -b https://github.com/cloudfoundry/java-buildpack.git … 
+0

你和[Andy Wilkinson](http://stackoverflow.com/users/1384297/andy-wilkinson)都很棒!願你的牛奶永遠不會過期 – AsafSavich

+1

@AsafSavich haha​​ha。這個解決方案雖然很有魅力 – neaGaze