CloudFoundry Grails - 无法检测 java 编译器,请确保您使用的是 JDK 而不是 JRE

CloudFoundry Grails - Unable to detect java compiler, make sure you're using a JDK not a JRE

我遇到一些非常奇怪的问题,当我将我的 grails 应用程序部署到 CloudFOundry (run.pivotal.io) 时,出现奇怪的异常。

2015-02-16T11:12:18.000+00:00 [App/0] OUT at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:370)
2015-02-16T11:12:18.000+00:00 [App/0] OUT at org.vertx.java.platform.impl.java.JavaVerticleFactory.createVerticle(JavaVerticleFactory.java:51)
2015-02-16T11:12:18.000+00:00 [App/0] OUT java.lang.RuntimeException: Compilation failed
2015-02-16T11:12:18.000+00:00 [App/0] OUT vert.x-eventloop-thread-2] ERROR impl.DefaultContext - Unhandled exception
2015-02-16T11:12:18.000+00:00 [App/0] OUT ... 7 more
2015-02-16T11:12:18.000+00:00 [App/0] OUT Caused by: java.lang.RuntimeException: Unable to detect java compiler, make sure you're using a JDK not a JRE!
2015-02-16T11:12:18.000+00:00 [App/0] OUT at java.lang.Thread.run(Thread.java:745)
2015-02-16T11:12:18.000+00:00 [App/0] OUT at io.netty.util.concurrent.SingleThreadEventExecutor.run(SingleThreadEventExecutor.java:116)
2015-02-16T11:12:18.000+00:00 [App/0] OUT at org.vertx.java.platform.impl.java.CompilingClassLoader.<init>(CompilingClassLoader.java:108)
2015-02-16T11:12:18.000+00:00 [App/0] OUT at org.vertx.java.platform.impl.DefaultPlatformManager.run(DefaultPlatformManager.java:1740)
2015-02-16T11:12:06.000+00:00 [App/0] OUT Configuring Spring Security Core ...
2015-02-16T11:12:00.000+00:00 [App/0] OUT [CONTAINER] udAutoReconfigurationApplicationContextInitializer INFO Adding cloud service auto-reconfiguration to ApplicationContext
2015-02-16T11:11:58.000+00:00 [App/0] OUT [CONTAINER] org.apache.tomcat.util.digester.Digester INFO TLD skipped. URI: http://www.springframework.org/tags/form is already defined
2015-02-16T11:11:58.000+00:00 [App/0] OUT [CONTAINER] org.apache.tomcat.util.digester.Digester INFO TLD skipped. URI: http://www.springframework.org/tags is already defined

那是什么? 在 BootStrap.groovy 我定义了 -

def init = { servletContext ->
vertxPlatformManager = PlatformLocator.factory.createPlatformManager()
URL[] classpath = [new File("src/java/pizzaVerticles/src/vertx/java/hello").toURI().toURL()]
vertxPlatformManager.deployVerticle("RateFetcherVerticleFirebase.java", null, classpath, 1, null, null)
vertxPlatformManager.deployVerticle("Server.java", null, classpath, 1, null, null)
vertxPlatformManager.deployVerticle("SocialTweety.java", null, classpath, 1, null, null)
}

还有一些其他的东西,但它们是数据库的记录,这是有效的。

首先我遇到了一些问题,比如找不到资源这样的错误:Server.java

所有三个 java 文件均有错误。然后我将那些 java 文件放在 web-app 文件夹中,在创建 war 时它也会拾取它们。但现在我有这个奇怪的例外。谷歌搜索并找不到任何相关内容。非常感谢您的帮助,谢谢!

我是 CloudFoundry 的新手。应用 运行 在 grails、vertx 上运行,并使用 gradle 构建并部署到 CF。在本地 运行 时工作正常。

尝试 运行 完成本教程 (http://docs.cloudfoundry.org/buildpacks/java/gsg-grails.html),先看看它是否有效,然后尝试找出你的无效的地方。