Google app engine gradle gae插件无法运行gaeRun
我正在努力证明,当我们开发gae java后端时,gradle和gradle gae插件将为我们完成这项工作 我取得了一些成功,但随后休了两周的假,这当然应该受到惩罚 现在我甚至无法启动应用程序。所有依赖项似乎都是正确的,并且项目编译正常 ======================================================================Google app engine gradle gae插件无法运行gaeRun,google-app-engine,gradle,Google App Engine,Gradle,我正在努力证明,当我们开发gae java后端时,gradle和gradle gae插件将为我们完成这项工作 我取得了一些成功,但随后休了两周的假,这当然应该受到惩罚 现在我甚至无法启动应用程序。所有依赖项似乎都是正确的,并且项目编译正常 ====================================================================== apply plugin: 'gae' apply plugin: 'eclipse' ext.version =
apply plugin: 'gae'
apply plugin: 'eclipse'
ext.version = "130"
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath 'org.gradle.api.plugins:gradle-gae-plugin:0.8'
}
}
repositories {
mavenLocal()
mavenCentral()
maven {
url "http://maven.kungfuters.org/content/groups/public/" // javapns lives here!
}
}
configurations {
all*.exclude module: 'slf4j-log4j12'
}
dependencies {
def gaeVersion = '1.7.7'
def jerseyVersion = '1.17.1'
gaeSdk "com.google.appengine:appengine-java-sdk:$gaeVersion"
// compile fileTree(dir: 'war/WEB-INF/lib', includes: ['*.jar']) // TODO: Change this in ze future!
compile "javax.servlet:servlet-api:2.5"
compile "commons-cli:commons-cli:1.2"
compile "org.apache.commons:commons-lang3:3.1"
compile "org.json:json:20090211"
compile "javax.ws.rs:jsr311-api:1.1.1"
compile "org.picocontainer:picocontainer:2.14.3"
compile "com.google.appengine:appengine-api-1.0-sdk:$gaeVersion"
compile "com.google.appengine:appengine-api-stubs:$gaeVersion"
compile "com.google.appengine:appengine-remote-api:$gaeVersion"
compile "com.google.appengine.tools:appengine-gcs-client:0.3"
compile "com.google.appengine.tools:appengine-mapreduce:0.2"
compile "com.google.appengine.tools:appengine-pipeline:0.1"
compile "com.google.api-client:google-api-client:1.15.0-rc"
compile "com.google.api-client:google-api-client-appengine:1.15.0-rc"
compile "com.google.api.client:google-api-client-json:1.2.3-alpha"
compile "com.google.apis:google-api-services-bigquery:v2-rev97-1.15.0-rc"
compile "com.google.apis:google-api-services-storage:v1beta2-rev10-1.15.0-rc"
compile "com.google.http-client:google-http-client:1.15.0-rc"
compile "com.google.http-client:google-http-client-jackson:1.15.0-rc"
compile "com.googlecode.javapns:javapns:2.2"
compile "com.sun.jersey:jersey-core:$jerseyVersion"
compile "com.sun.jersey:jersey-server:$jerseyVersion"
compile "com.sun.jersey:jersey-servlet:$jerseyVersion"
compile "com.sun.jersey:jersey-client:$jerseyVersion"
compile "com.sun.jersey:jersey-json:$jerseyVersion"
compile "org.bouncycastle:bcprov-jdk15on:1.48"
runtime "org.slf4j:slf4j-jdk14:1.7.5"
testCompile "junit:junit:4.10"
testCompile "org.mockito:mockito-all:1.9.0"
testCompile "com.google.appengine:appengine-testing:$gaeVersion"
}
sourceSets {
main { java {srcDir 'src' } }
test { java {srcDir 'testsrc' } }
}
test {
// set heap size for the test JVM(s)
minHeapSize = "128m"
maxHeapSize = "512m"
// set JVM arguments for the test JVM(s)
jvmArgs '-XX:MaxPermSize=768m'
// listen to events in the test execution lifecycle
beforeTest { descriptor ->
logger.lifecycle("Running: " + descriptor)
}
}
webAppDirName = file('war')
gae {
httpPort = 8888
jvmFlags = ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8889', '-Xmx1024m', '-XX:MaxPermSize=512m']
downloadSdk = true
warDir = file('war')
appcfg {
update {
useJava7 = true
}
email = 'foo@bar.se'
passIn = true
logs {
severity = 1
numDays = 1
outputFile = file('dalby.log')
}
app {
id = 'dalby-gunnar'
}
}
}
eclipse {
classpath {
downloadSources=true
}
}
原因:java.lang.ClassNotFoundException:com.google.appengine.api.LifecycleManager$ShutdownHook
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:423)
位于com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:214)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 30多
java.lang.NullPointerException
位于java.lang.Class.isAssignableFrom(本机方法)
位于org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
位于org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
位于org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
位于org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
位于org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
位于org.mortbay.jetty.Server.doStart(Server.java:224)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:230)
位于com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:307)
位于com.google.appengine.tools.development.AutomaticServerInstanceHolder.startUp(AutomaticServerInstanceHolder.java:26)
位于com.google.appengine.tools.development.AbstractServer.startup(AbstractServer.java:80)
位于com.google.appengine.tools.development.Servers.startup(Servers.java:78)
位于com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:216)
在com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:332)
位于com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
位于com.google.appengine.tools.development.DevAppServerMain.(DevAppServerMain.java:268)
位于com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:244)
================================
apply plugin: 'gae'
apply plugin: 'eclipse'
ext.version = "130"
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath 'org.gradle.api.plugins:gradle-gae-plugin:0.8'
}
}
repositories {
mavenLocal()
mavenCentral()
maven {
url "http://maven.kungfuters.org/content/groups/public/" // javapns lives here!
}
}
configurations {
all*.exclude module: 'slf4j-log4j12'
}
dependencies {
def gaeVersion = '1.7.7'
def jerseyVersion = '1.17.1'
gaeSdk "com.google.appengine:appengine-java-sdk:$gaeVersion"
// compile fileTree(dir: 'war/WEB-INF/lib', includes: ['*.jar']) // TODO: Change this in ze future!
compile "javax.servlet:servlet-api:2.5"
compile "commons-cli:commons-cli:1.2"
compile "org.apache.commons:commons-lang3:3.1"
compile "org.json:json:20090211"
compile "javax.ws.rs:jsr311-api:1.1.1"
compile "org.picocontainer:picocontainer:2.14.3"
compile "com.google.appengine:appengine-api-1.0-sdk:$gaeVersion"
compile "com.google.appengine:appengine-api-stubs:$gaeVersion"
compile "com.google.appengine:appengine-remote-api:$gaeVersion"
compile "com.google.appengine.tools:appengine-gcs-client:0.3"
compile "com.google.appengine.tools:appengine-mapreduce:0.2"
compile "com.google.appengine.tools:appengine-pipeline:0.1"
compile "com.google.api-client:google-api-client:1.15.0-rc"
compile "com.google.api-client:google-api-client-appengine:1.15.0-rc"
compile "com.google.api.client:google-api-client-json:1.2.3-alpha"
compile "com.google.apis:google-api-services-bigquery:v2-rev97-1.15.0-rc"
compile "com.google.apis:google-api-services-storage:v1beta2-rev10-1.15.0-rc"
compile "com.google.http-client:google-http-client:1.15.0-rc"
compile "com.google.http-client:google-http-client-jackson:1.15.0-rc"
compile "com.googlecode.javapns:javapns:2.2"
compile "com.sun.jersey:jersey-core:$jerseyVersion"
compile "com.sun.jersey:jersey-server:$jerseyVersion"
compile "com.sun.jersey:jersey-servlet:$jerseyVersion"
compile "com.sun.jersey:jersey-client:$jerseyVersion"
compile "com.sun.jersey:jersey-json:$jerseyVersion"
compile "org.bouncycastle:bcprov-jdk15on:1.48"
runtime "org.slf4j:slf4j-jdk14:1.7.5"
testCompile "junit:junit:4.10"
testCompile "org.mockito:mockito-all:1.9.0"
testCompile "com.google.appengine:appengine-testing:$gaeVersion"
}
sourceSets {
main { java {srcDir 'src' } }
test { java {srcDir 'testsrc' } }
}
test {
// set heap size for the test JVM(s)
minHeapSize = "128m"
maxHeapSize = "512m"
// set JVM arguments for the test JVM(s)
jvmArgs '-XX:MaxPermSize=768m'
// listen to events in the test execution lifecycle
beforeTest { descriptor ->
logger.lifecycle("Running: " + descriptor)
}
}
webAppDirName = file('war')
gae {
httpPort = 8888
jvmFlags = ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8889', '-Xmx1024m', '-XX:MaxPermSize=512m']
downloadSdk = true
warDir = file('war')
appcfg {
update {
useJava7 = true
}
email = 'foo@bar.se'
passIn = true
logs {
severity = 1
numDays = 1
outputFile = file('dalby.log')
}
app {
id = 'dalby-gunnar'
}
}
}
eclipse {
classpath {
downloadSources=true
}
}
听起来您必须告诉Java编译器(我假设您的代码是用Java编写的)设置注释处理。从错误消息中可以看到,我将尝试以下操作: 禁用注释处理
compileJava.options.compilerArgs = ['-proc:none']
compileJava.options.compilerArgs = ['-implicit']
启用注释处理
compileJava.options.compilerArgs = ['-proc:none']
compileJava.options.compilerArgs = ['-implicit']
在我看来,似乎在类路径中找不到AppEngine SDK类之一。您为什么用配置
gaeSdk
将它们定义为编译依赖项?我觉得只要把他们分配到gaeSdk就行了。哼。。我的错!我跟踪了哪些州。。。。或者,您可以通过将约定属性downloadSdk设置为true来选择自动下载SDK。此选项要求您通过设置配置gaeSdk来指定要使用的SDK版本。依赖项{gaeSdk'com.google.appengine:appengine java sdk:1.7.3'}我将gaeSdk deps移到gae{}节中,并将编译deps移到appengine-api-1.0-sdk和appengine api存根中。这是可行的,但我在编译时得到了这一点:compileJava警告:受支持的源代码版本“RELEASE_6”来自注释处理器com.google.appengine.tools.compilation.datastorecallbackprocessor“小于-source”1.7警告:隐式编译的文件不受注释处理的约束。使用-proc:none禁用批注处理,或使用-implicit指定隐式编译的策略。没有帮助。也就是说,结果相同。您是否也将编译器源代码兼容性更改为1.7,正如我在回答您的另一个问题时所述?问题可能是: