我使用的是Android Studio 2.1.1。我正在写一个扩展LinearLayout
的课程。这个类有一个字符串属性,我尝试用类构造函数中的基本android JSON lib进行解析。代码看起来很好,因为它编译并安装到设备上。但Android Studio无法在预览中找到该类(请参见下面的屏幕截图)。
问题的解决方案是什么? 如何设置' JSON lib' Android Studio预览版?
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 ...
答案 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。