title: Add external jar to android project in eclipse
body: <p>I am building a simple Android project in eclipse that uses the <a href="http://code.google.com/p/google-api-java-client/" rel="nofollow">google-api-java-client</a>. I'm trying to follow <a href="http://ddewaele.blogspot.com/2011/05/introducing-google-places-api.html" rel="nofollow">this tutorial</a> to get it up and running. I've searched through SO for answers on how to add JARs to an Android project in Eclipse. Most of them recommend adding the JARs into the <code>lib/</code> folder inside the Android project, and then adding those JARs to the project's build path. I've done these two things. The project compiles fine (in any case, Eclipse doesn't complain about any errors). But when I run the Android app in my emulator, I get <code>ClassDefNotFoundError</code> whenever I try to instantiate any class in the <code>google-api-java-client</code> JAR. For example</p>
  
  <pre><code>new com.google.api.client.http.apache.ApacheHttpTransport();
  </code></pre>
  
  <p>Raises <code>ClassDefNotFoundError</code>.</p>
  
  <p>Here is the code that causes the error:</p>
  
  <pre><code>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();
      }
  
  }
  </code></pre>
  
  <p>Here is a more complete output from Eclipse LogCat:</p>
  
  <pre><code>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)
  </code></pre>