我正在PCF中部署REST应用程序。应用程序是在Spring工具套件(STS)IDE中使用spring boot开发的。我添加了云代工插件,并将应用程序添加到STS的PCF中。它给了我一个启动错误。
我尝试了通过互联网提供的所有选项,即使最后也出现了以下错误
线程“main”中的异常java.lang.NoClassDefFoundError:org / springframework / boot / SpringApplication
我检查了我的快照jar,它在lib文件夹中有依赖jar,其中包含SpringApplication类。
一个奇怪的是,当我从CLI将应用程序推送到PCF时,我的应用程序启动并正常工作
我在STS中遗漏了什么吗?
答案 0 :(得分:0)
Cloud Foundry Tools(CFT)插件在打包Spring Boot jar应用程序方面存在一些已知问题,目前正在针对即将发布的CFT版本进行修复。
也就是说,在某些情况下,从Eclipse Package Explorer刷新Spring Boot项目(通常是F5),以及执行Maven - >在部署应用程序之前,从Package Explorer上下文菜单更新Project可能会解决NoClassDefFoundError问题。
但是,使用CFT将Spring Boot部署到Cloud Foundry的替代方法是Spring Boot Dashboard视图,它可以更好地支持打包Spring Boot应用程序。
可在Spring Tool Suite(STS)3.7.1或更高版本中使用。
您可以在Boot Dashboard视图中创建PCF目标,只需拖放Spring Boot项目即可进行部署。
以下是Spring Boot Dashboard的教程:
https://spring.io/blog/2015/10/15/the-spring-boot-dashboard-in-sts-part-2-working-with-cloud-foundry
您可以在此处找到包含Spring Boot Dashboard视图的最新STS分发版本:
http://dist.springsource.com/snapshot/STS/nightly-distributions.html
答案 1 :(得分:0)
您可能做了我刚刚做的事情,却忘记了在打包插件中添加执行和配置步骤。
这会将您的应用程序打包为可执行jar
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<executable>true</executable>
</configuration>
</execution>
</executions>
</plugin>