Java Appengine SDK 1.9.6找不到方法

时间:2014-06-11 07:13:31

标签: google-app-engine

我一直在寻找找不到问题的方法。我在appengine google小组上发现了类似的问题,但没有一个答案有助于解决问题。在本地使用dev服务器运行我的战争工作正常,但是当我部署我的应用程序时,我收到以下错误。我已经包含了异常的顶部,最后一个的顶部以及我的war的lib文件夹中的jar列表。

这是例外的顶部。我把每个agurment放在它自己的行上以便于阅读

java.lang.NoSuchMethodError: com.google.appengine.api.datastore.Key.<init>(
     Ljava/lang/String;
     Lcom/google/appengine/api/datastore/Key;
     Ljava/lang/String;
     Lcom/google/appengine/api/datastore/AppIdNamespace;)V

这是最后一个造成的顶部。

Caused by: java.lang.NoSuchMethodError: com.google.appengine.api.datastore.Key.<init>(
    Ljava/lang/String
    ;Lcom/google/appengine/api/datastore/Key;
    Ljava/lang/String;
    Lcom/google/appengine/api/datastore/AppIdNamespace;)V

    at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:84)
    at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:77)
    at com.googlecode.objectify.Key.<init>(Key.java:97)

这是我战争的WEB-INF / lib文件夹中的罐子列表。

aopalliance-1.0.jar
appengine-api-1.0-sdk-1.9.6.jar
appengine-api-labs-1.9.6.jar
appengine-jsr107cache-1.9.6.jar
asm-3.1.jar
cglib-2.2.1-v20090111.jar
client-only-0.1.jar
datanucleus-appengine-1.0.10.final.jar
datanucleus-core-1.1.5.jar
datanucleus-jpa-1.1.5.jar
geronimo-jpa_3.0_spec-1.1.1.jar
geronimo-jta_1.1_spec-1.1.1.jar
gin-1.5.0.jar
guava-15.0.jar
guava-gwt-15.0.jar
guice-3.0.jar
guice-assistedinject-3.0.jar
guice-multibindings-3.0.jar
guice-servlet-3.0.jar
gwt-servlet.jar
hibernate-validator-4.1.0.Final-sources.jar
hibernate-validator-4.1.0.Final.jar
hibernate-validator-annotation-processor-4.1.0.Final.jar
javax.inject-1.jar
jdo2-api-2.3-eb.jar
jsr107cache-1.1.jar
jsr173-1.0.jar
jsr305-1.3.9.jar
jta-1.1.jar
libservice.jar
log4j-over-slf4j-1.6.1.jar
mgwt-1.2.0-rc-opera-removed.jar
objectify-5.0.2.jar
persistence-api-1.0.jar
server-and-client-0.1.jar
server-only.jar
slf4j-api-1.7.2.jar
uadetector-core-0.9.2.jar
uadetector-resources-2013.02.jar
validation-api-1.0.0.GA-sources.jar
validation-api-1.0.0.GA.jar

1 个答案:

答案 0 :(得分:0)

这是因为在GWT和Objectify的帮助下得到了gradle和javac的怪癖。

从~4.1版开始,Objectify有一个单独的jar,里面有一些appengine java源代码,因此可以通过GWT在浏览器中使用Objectify类。

默认情况下,gradle中编译依赖项中包含的源代码将包含在编译任务的编译输出中。这是因为gradle不使用sourcepath参数到java编译器,并且根据Oracle的javac文档:

  

如果未指定-sourcepath选项,则用户类路径为   还搜索了源文件。

我通过将此问题添加到我的gradle文件

来修复此问题
compileJava.options.compilerArgs += "-sourcepath"
compileJava.options.compilerArgs += ""