2015-12-22 25 views
0

正如标题所示,我最近在运行我的android测试时遇到了NoClassDefFoundError异常。而且该类是一个自定义类。我知道这可能是类路径的问题,但我不知道在Ubuntu上设置类路径的位置。如何在Ubuntu上检查Android Studio的类路径

[更新]

这是调用时getIdlingResource()被称为错误的类:

public final class ToastManager { 
    private static final CountingIdlingResource idlingResource = new CountingIdlingResource("toast"); 
    private static final View.OnAttachStateChangeListener listener = new View.OnAttachStateChangeListener() { 
    @Override 
    public void onViewAttachedToWindow(final View v) { 
     idlingResource.increment(); 
    } 

    @Override 
    public void onViewDetachedFromWindow(final View v) { 
     idlingResource.decrement(); 
    } 
}; 

private ToastManager() { } 

public static Toast makeText(final Context context, final CharSequence text, final int duration) { 
    Toast t = Toast.makeText(context, text, duration); 
    t.getView().addOnAttachStateChangeListener(listener); 
    return t; 
} 

// For testing 
public static IdlingResource getIdlingResource() { 
    return idlingResource; 
} 
} 

这是错误日志:

java.lang.NoClassDefFoundError: com/idreamsglobal/idreams/utils/ToastUtil 
at com.idreamsglobal.idreams.RegisterActivityTest.tearDown(RegisterActivityTest.java:168) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33) 
at android.support.test.internal.statement.UiThreadStatement.evaluate(UiThreadStatement.java:55) 
at android.support.test.rule.ActivityTestRule$ActivityStatement.evaluate(ActivityTestRule.java:257) 
at org.junit.rules.RunRules.evaluate(RunRules.java:20) 
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
at org.junit.runners.Suite.runChild(Suite.java:128) 
at org.junit.runners.Suite.runChild(Suite.java:27) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
at org.junit.runner.JUnitCore.run(JUnitCore.java:137) 
at org.junit.runner.JUnitCore.run(JUnitCore.java:115) 
at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:54) 
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:240) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1741) 
+0

'可能是classpath的问题'你确定吗? –

+0

阅读http://examples.javacodegeeks.com/java-basics/exceptions/java-lang-noclassdeffounderror-how-to-solve-no-class-def-found-error/ –

+0

我已更新我的帖子。任何与ExceptionInInitializerError有关的事情? –

回答

0

我解决了这个问题结合杰罗姆和杰罗德的回答:

  1. 安装JDK - sudo apt-get install openjdk-7-jdk
  2. 环境变量 - sudo nano /etc/environment 添加下列行:
  3. JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386
  4. 重新启动,Android Studio中启动。 (我还添加了一个链接到主菜单studio.sh)。

而且我刚刚发现https://stackoverflow.com/a/17827697/2533809这似乎有一个很好的写了,几乎相同的答案。

(我使用Debian 7喘息)

Reference link

0

在“项目”视图中,“应用”模块单击鼠标右键,选择“打开模块设置”。然后点击顶部的“依赖关系”标签。下面的框会列出类路径。默认情况下,它也包含* .jar。

如果您正在使用的ToastUtil在一个jar中,我想它应该默认添加。但是,请尝试在依赖项下手动添加该jar。 如果它是您写的文件,请检查您是否已正确导入。

此外,只需尝试使用终端将文件移出项目并构建错误代码。然后再将它添加到适当的包中并尝试一个干净的构建。有时候,那会有诀窍。

希望有帮助!