PCF中的Spring启动应用程序 - 线程“main”中的异常java.lang.NoClassDefFoundError:org / springframework / boot / SpringApplication

时间:2016-06-08 17:29:48

标签: spring-boot spring-tool-suite pivotal-cloud-foundry

我正在PCF中部署REST应用程序。应用程序是在Spring工具套件(STS)IDE中使用spring boot开发的。我添加了云代工插件,并将应用程序添加到STS的PCF中。它给了我一个启动错误。

我尝试了通过互联网提供的所有选项,即使最后也出现了以下错误

线程“main”中的异常java.lang.NoClassDefFoundError:org / springframework / boot / SpringApplication

我检查了我的快照jar,它在lib文件夹中有依赖jar,其中包含SpringApplication类。

一个奇怪的是,当我从CLI将应用程序推送到PCF时,我的应用程序启动并正常工作

我在STS中遗漏了什么吗?

2 个答案:

答案 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>