我正在从旧的项目中,从过时的Files API切换到新的Cloud Storage Client Library,似乎有依赖性问题。我无法使Maven工作,因此我需要手动安装所需的jar。我可以编译并运行我的servlet,但是当我尝试通过DriverManager.getConnection()访问Cloud SQL时遇到此运行时错误:
java.lang.NoClassDefFoundError: com/google/api/client/http/HttpTransport
HttpTransport应该放在哪个jar中?
如何查看我上传到Google的战争是否包含战争?
我在war / WEB-INF / lib和Java构建路径库中都包含了所有这些内容:
From App Engine SDK:
appengine-api-1.0-sdk-1.9.25.jar
appengine-api-labs.jar
appengine-api.jar
appengine-endpoints-deps.jar
appengine-endpoints.jar
appengine-jsr107cache-1.9.25.jar
appengine-jsr107cache.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
jdo2-api-2.3-eb.jar
jsr107cache-1.1.jar
The Cloud Storage Client Library:
appengine-gcs-client-0.4.4.jar
Dependencies of the Cloud Storage Client Library:
guava-18.0.jar
joda-time-2.8.2.jar
google-api-services-storage-v1beta2-rev77-1.20.0.jar
For good measure, every jar from the Cloud Storage API libs:
commons-logging-1.1.1.jar
google-api-client-1.20.0.jar
google-api-client-1.20.0.jar.properties
google-api-client-android-1.20.0.jar
google-api-client-android-1.20.0.jar.properties
google-api-client-appengine-1.20.0.jar
google-api-client-gson-1.20.0.jar
google-api-client-jackson2-1.20.0.jar
google-api-client-java6-1.20.0.jar
google-api-client-servlet-1.20.0.jar
google-http-client-1.20.0.jar
google-http-client-1.20.0.jar.properties
google-http-client-android-1.20.0.jar
google-http-client-android-1.20.0.jar.properties
google-http-client-appengine-1.20.0.jar
google-http-client-gson-1.20.0.jar
google-http-client-gson-1.20.0.jar.properties
google-http-client-jackson2-1.20.0.jar
google-http-client-jackson2-1.20.0.jar.properties
google-http-client-jdo-1.20.0.jar
google-http-client-jdo-1.20.0.jar.properties
google-oauth-client-1.20.0.jar
google-oauth-client-1.20.0.jar.properties
google-oauth-client-appengine-1.20.0.jar
google-oauth-client-java6-1.20.0.jar
google-oauth-client-jetty-1.20.0.jar
google-oauth-client-servlet-1.20.0.jar
gson-2.1.jar
gson-2.1.jar.properties
httpclient-4.0.1.jar
httpcore-4.0.1.jar
jackson-core-2.1.3.jar
jackson-core-2.1.3.jar.properties
jdo2-api-2.3-eb.jar
jetty-6.1.26.jar
jetty-util-6.1.26.jar
jsr305-1.3.9.jar
transaction-api-1.1.jar
看起来它与jar文件,类路径或云存储无关。该应用程序对Cloud SQL使用了旧的rdbms连接方法,但我不知道该方法已被弃用:
DriverManager.registerDriver(new AppEngineDriver());
Connection conn = DriverManager.getConnection("jdbc:google:rdbms://incredipede:instance/incredipede");
我收集到对registerDriver的调用失败,因此当我调用getConnection()时,所需的类不可用。切换到新的mysql连接,并使用Class.forName()方法:
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:google:mysql://incredipede:instance/incredipede?user=root");
Also must add this to appengine-web.xml:
<use-google-connector-j>true</use-google-connector-j>
偶然地,我注意到在eclipse中输入应用程序引擎实例名称(项目>属性>谷歌>应用程序引擎>谷歌云sql>应用程序引擎sql实例),即使在一个新项目中,也会弹出类似的HttpTransport错误。这可能是appengine eclipse插件中或appengine 1.9.25中的错误。我怀疑这些错误是旧连接方法的预期行为,无论是否赞成。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句