未找到AndroidStudio预览类org.json.JSONObject

时间:2016-06-04 08:48:46

标签: android-studio

我使用的是Android Studio 2.1.1。我正在写一个扩展LinearLayout的课程。这个类有一个字符串属性,我尝试用类构造函数中的基本android JSON lib进行解析。代码看起来很好,因为它编译并安装到设备上。但Android Studio无法在预览中找到该类(请参见下面的屏幕截图)。

问题的解决方案是什么? 如何设置' JSON lib' Android Studio预览版?

Android Studio Screenshot

Android Studio错误堆栈:

java.lang.ClassNotFoundException: org.json.JSONException
    at org.jetbrains.android.uipreview.ModuleClassLoader.load(ModuleClassLoader.java:154)
    at com.android.tools.idea.rendering.RenderClassLoader.findClass(RenderClassLoader.java:52)
    at org.jetbrains.android.uipreview.ModuleClassLoader.findClass(ModuleClassLoader.java:92)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2483)
    at java.lang.Class.getConstructor0(Class.java:2793)
    at java.lang.Class.getConstructor(Class.java:1708)
    at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:396)
    at ...

2 个答案:

答案 0 :(得分:1)

使用Android Studio 2.2.3时,我遇到了同样的问题,而且sky的解决方法对我有用,但我看得更深,发现ClassNotFoundException是由于代码中没有执行的代码中的JSONException引用所特有的。用于布局预览。有趣的是,对JSONObject的未执行引用不会导致ClassNotFoundException,但显然编译器想要加载JSONException类。

我的解决方案是在我的代码中捕获Exception而不是JSONException(它不会受到更改的影响)。我认为这比添加其他不必要的库更好。

答案 1 :(得分:0)

我确实找到了这种问题的替代方法。我下载了' json-20160212.jar'来自maven repo。然后将它放到项目的根目录(或您喜欢的其他目录)中,并在项目的build.gradle中添加依赖项:

dependencies {
    provided files('json-20160212.jar')
}

我正在使用'提供'避免使用我的项目编译json库的范围,但有能力预览'我的布局没有ClassNotFoundException。