Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android can't find class from external jar

I am trying to create a simple test app that basically extends the Android Hello World tutorial app by invoking some simple functionality from an external JAR. However, when I run the app, it can't find the class from the JAR. What am I doing wrong?

Here's entire source of the JAR:

package com.mytests.pow;

public class power2 {

private double d;   

public power2()
{
    d = 0.0;
}   

public String stp2(double dd) 
{
    d = dd*dd;
    return String.format("%e", d);
}

}

And here's the "Hello World ++" source:

package com.myLuceneTests.namespace;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import com.mytests.pow.*;

public class AndroidSimpleSIH_EclipseActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

    power2 pp = new power2();
    String iout = pp.stp2(12.0);

    super.onCreate(savedInstanceState);
    TextView tv = new TextView(this);
    tv.setText(iout);
    setContentView(tv);

}
}

When I run the app, I get this in logcat:

11-22 12:24:52.697  2963  2963 E dalvikvm: Could not find class 'com.mytests.pow.power2', referenced from method com.myLuceneTests.namespace

.AndroidSimpleSIH_EclipseActivity.onCreate

and then

11-22 12:24:52.713  2963  2963 E AndroidRuntime: java.lang.NoClassDefFoundError: com.mytests.pow.power2

What am I doing wrong? Thanks!

By the way, my actual goal is to use a real JAR (rather than this toy one) in an Android app. I might have access to the code for that JAR and might be able to rebuild it but it's a big piece of Java code and I am likely to encounter problems when rebuilding it so I am trying to use the pre-built JAR.

like image 497
I Z Avatar asked Nov 22 '11 17:11

I Z


People also ask

Where is the class file in Android Studio?

You can find them in the build/intermediates/classes/debug/* directory.

Where is the libs folder in Android Studio?

How to find the libs folder in Android Studio? If you are unable to find the libs folder in Android studio then open your android project in “Project” mode If the project is already opened in the “Android” mode. Then go to Your Project Name > app > libs and right-click on it and paste the downloaded JAR files.

What are JAR files Android?

jar JAR file is only used for the Java compiler before deployment on an Android device. It is not bundled with your application. By default, all calls to the provided Android. jar throw exceptions, this allows you to write tests that do not depend on any Android platform behavior.


1 Answers

There's no need to build the external jar. Try removing it from your build path and follow these steps:

  1. Create a folder in the root of your Android project called libs.
  2. Add the jar to that folder.
  3. Right-click the jar and click to add to build path.
  4. Clean your project and try it again.
like image 128
LuxuryMode Avatar answered Nov 15 '22 15:11

LuxuryMode