应用包中的类的NoClassDefFoundError

时间:2019-03-08 07:09:08

标签: java android noclassdeffounderror

以下是我的活动:

com.domain.app.SampleActivity.java

public class SampleActivity extends Activity {

  @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.sample_layout);

        DataProviderClass dataProvider = new DataProviderClass();
    }
}

com.domain.app.anotherFolder.DataProviderClass.java

public class DataProviderClass {
  private DataProviderClassHelper helper = new DataProviderClassHelper();
}

com.domain.app.anotherFolder.DataProviderClassHelper.java

public class DataProviderClassHelper implements ExternalLibInterface {
  public DataProviderClassHelper() {
    }
}

以下是日志:

  

I / art(22555):拒绝对先前失败的类java.lang.Class进行重新初始化   I / art(22555):拒绝先前失败的类java.lang.Class的重新初始化   I / art(22555):拒绝先前失败的类java.lang.Class的重新初始化   I / art(22555):拒绝先前失败的类java.lang.Class的重新初始化   I / art(22555):拒绝先前失败的类java.lang.Class的重新初始化   E / AndroidRuntime(22555):进程:com.domain.app,PID:22555   E / AndroidRuntime(22555):java.lang.NoClassDefFoundError:com.domain.app.anotherFolder.DataProviderClassHelper.java   E / AndroidRuntime(22555):位于com.domain.app.anotherFolder.DataProviderClass.java。(DataProviderClass.java:77)   E / AndroidRuntime(22555):位于com.domain.app.SampleActivity..onCreate(SampleActivity.java:64)   W / ActivityManager(1103):强制完成活动1 com.domain.app/.SampleActivity

对我来说,一个类被初始化没有意义,但是同一文件夹中的另一个类却给我一个错误。
在其他类似的问题中,人们在尝试导入的外部库中遇到此错误,但这并没有真正帮助我。

1 个答案:

答案 0 :(得分:2)

在我的DataProviderClassHelper中,我实际上是在实现一个外部库的存根jar中提供的ExternalLibInterface接口。
因为它是provided,所以代码可以成功编译但是实际的东西在运行时对我不可用。为了能够访问系统上的实际内容,我必须在AndroidManifest.xml中添加一些库特定的组件。因此,该解决方案可能无法完全帮助所有人,但可以帮助人们确定问题的原因。 在我的情况下,这是由于ExternalLibInterface在运行时不可用。