我一直在寻找找不到问题的方法。我在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
答案 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 += ""