
[英]Add external jar jwordpress-0.5.1.jar to android project in eclipse
[英]Add external jar to android project in eclipse
我正在使用google-api-java-client在eclipse中构建一个简单的Android项目。 我正在尝试按照本教程启动并运行它。 我在SO中搜索了如何将JAR添加到Eclipse中的Android项目的答案。 他们中的大多数建议将JAR添加到Android项目内的lib/
文件夹中,然后将这些JAR添加到项目的构建路径中。 我做了这两件事。 该项目编译良好(无论如何,Eclipse不会抱怨任何错误)。 但是当我在我的模拟器中运行Android应用程序时,每当我尝试在google-api-java-client
JAR中实例化任何类时,我都会得到ClassDefNotFoundError
。 例如
new com.google.api.client.http.apache.ApacheHttpTransport();
引发ClassDefNotFoundError
。
以下是导致错误的代码:
package com.mycom.android;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
public class SearchRunner implements OnClickListener {
private static final String API_KEY = "AIzaSyA1Mg3xWXfoov4HdPUzYY2NwTxuvCev1-E";
private static final String PLACES_SEARCH_URL = "";
@Override
public void onClick(View v) {
EditText editText = (EditText) v;
String searchText = editText.getText().toString();
runSearch(searchText);
}
protected void runSearch(String searchText) {
new com.google.api.client.http.apache.ApacheHttpTransport();
}
}
以下是Eclipse LogCat的更完整输出:
12-21 15:42:11.402: E/dalvikvm(3412): Could not find class 'com.google.api.client.http.apache.ApacheHttpTransport', referenced from method com.mycom.android.SearchRunner.runSearch
12-21 15:42:11.402: W/dalvikvm(3412): VFY: unable to resolve new-instance 70 (Lcom/google/api/client/http/apache/ApacheHttpTransport;) in Lcom/mycom/android/SearchRunner;
12-21 15:42:11.402: D/dalvikvm(3412): VFY: replacing opcode 0x22 at 0x0000
12-21 15:42:11.402: D/dalvikvm(3412): DexOpt: unable to opt direct call 0x00ca at 0x02 in Lcom/mycom/android/SearchRunner;.runSearch
12-21 15:42:11.682: I/MapActivity(3412): Handling network change notification:CONNECTED
12-21 15:42:11.682: E/MapActivity(3412): Couldn't get connection factory client
12-21 15:42:11.791: D/gralloc_goldfish(3412): Emulator without GPU emulation detected.
12-21 15:42:12.532: D/dalvikvm(3412): GC_CONCURRENT freed 102K, 3% free 10520K/10823K, paused 5ms+7ms
12-21 15:42:18.422: D/AndroidRuntime(3412): Shutting down VM
12-21 15:42:18.422: W/dalvikvm(3412): threadid=1: thread exiting with uncaught exception (group=0x409951f8)
12-21 15:42:18.482: E/AndroidRuntime(3412): FATAL EXCEPTION: main
12-21 15:42:18.482: E/AndroidRuntime(3412): java.lang.NoClassDefFoundError: com.google.api.client.http.apache.ApacheHttpTransport
12-21 15:42:18.482: E/AndroidRuntime(3412): at com.mycom.android.SearchRunner.runSearch(SearchRunner.java:20)
我按照这些说明逐步解决了这个问题。 当我最初开始设置项目时:
google-api-java-client
项目中的JAR文件导入到项目的lib/
文件夹中 lib/google-api-client...
并选择了Build Path> Add To Build Path 此时,在Eclipse中,我的项目的“Referenced Libraries”部分下出现了一堆库:
jsr305-1.3.9.jar
gson-1.7.1.jar
guava-r09.jar
junit-4.8.2.jar
httpclient-4.0.3.jar
httpcore-4.0.1.jar
commons-logging-1.1.1.jar
commons-codec-1.3.jar
jackson-core-asl-1.9.1.jar
xpp3-1.1.4c.jar
protobuf-java-2.2.0.jar
google-http-client-1.6.0-beta.jar
google-oauth-client-1.6.0-beta.jar
google-api-client-1.6.0-beta.jar
但是,当我进入Project> Properties> Java Build Path> Libraries时,我看到只列出了google-api-client...
当我尝试运行该项目时,我得到了ApacheHttpTransport
的NoClassDefFounError
,如原始帖子中所述。 这是因为该类是在google-http-client
定义的! 通过手动将google-http-client
添加到构建路径,问题就解决了。
获得的经验教训:仅仅因为在Eclipse项目的“引用库”下列出了JAR并不意味着这些JAR包含在项目的构建路径中。
也许进口? ctrl + shift + o有什么用吗?
如果没有,我不确定你是否必须实例化好类,这个错误
是将jar放在lib文件夹中并将项目添加到构建路径(项目的属性部分。之后Eclipse将清理并构建。您应该看到正在使用的jar文件,因为它将出现在“库”中Android库下的部分。
要引用使用import some.package.com。 正如letroll所说ctrl + shift + o应该为你排序进口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.