2014-06-11 33 views
-1

我一直有一個可怕的時間找出一個沒有發現問題的方法。我在appengine google小組上發現了類似的問題,但沒有一個答案幫助解決了這個問題。用dev服務器在本地運行我的戰爭可以正常工作,但是當我部署我的應用程序時,出現下面的錯誤。我在戰爭的lib文件夾中包含了異常的頂部,最後一個引起的頂部和一系列罐子。Java Appengine SDK 1.9.6找不到方法

這是異常的頂部。我把每個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文件夾中的jar列表。

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

發生這種情況是因爲GWT和Objectify有一點幫助,這是因爲Gradle和javac的怪癖。

從版本4.1開始,Objectify已經有一個單獨的jar,其中包含一些appengine java源代碼,以便Objectify類可以通過GWT在瀏覽器中使用。

默認情況下,編譯任務的編譯輸出中會包含gradle中的編譯依賴關係中包含的源代碼。這是因爲gradle這個不使用源路徑參數Java編譯器,並根據甲骨文的javac文檔:

如果未指定-sourcepath選項,則用戶類路徑 也搜索源文件。

我加入這個我gradle這個文件解決了這一問題

compileJava.options.compilerArgs += "-sourcepath" 
compileJava.options.compilerArgs += ""