首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阅读ini时VerifyError

阅读ini时VerifyError
EN

Stack Overflow用户
提问于 2013-12-26 23:29:37
回答 2查看 302关注 0票数 1

我使用ini4j,因为我更喜欢windoze的inis。此部分确保文件存在:

代码语言:javascript
复制
File INI_FILE = new File(getActivity().getFilesDir().getAbsolutePath()+File.separator+"config.ini");
    final String INI = getActivity().getFilesDir().getAbsolutePath()+File.separator+"config.ini";

    if(!GetProp.Supports(INI_FILE)){

        File INI_F = new File(getActivity().getFilesDir().getAbsolutePath()+File.separator+"config.ini");
        if (!INI_F.exists()) {
                try {
                    INI_F.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
          Wini ini = null;
        try {
            ini = new Wini(new File(INI));
        } catch (InvalidFileFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        ini.put("Throttle", "refresh_interval", 1000);
        ini.put("Throttle", "active", false);
        ini.put("Throttle", "temp_limit", 80);

        try {
            ini.store();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        }      
    }

这就是我试图读它的方式:(这段代码在onClick()下面)

代码语言:javascript
复制
Wini ini = null;
                try {
                    ini = new Wini(new File(INI));
                } catch (InvalidFileFormatException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }           

                int refresh_interval = ini.get("Throttle", "refresh_interval", int.class);  // ERROR HERE
                boolean active = ini.get("Throttle", "active", boolean.class);
                int max_temp = ini.get("Throttle", "temp_limit", int.class);

我得到了以下错误:

代码语言:javascript
复制
E/AndroidRuntime(12340): FATAL EXCEPTION: main
E/AndroidRuntime(12340): java.lang.VerifyError: org/ini4j/spi/BeanTool
E/AndroidRuntime(12340):    at org.ini4j.BasicOptionMap.get(BasicOptionMap.java:161)
E/AndroidRuntime(12340):    at org.ini4j.BasicProfile.get(BasicProfile.java:129)
E/AndroidRuntime(12340):    at com.costinutz32.hox_control.fragments.CPU$6.onClick(CPU.java:622)
E/AndroidRuntime(12340):    at android.view.View.performClick(View.java)
E/AndroidRuntime(12340):    at android.view.View$PerformClick.run(View.java)
E/AndroidRuntime(12340):    at android.os.Handler.handleCallback(Handler.java)
E/AndroidRuntime(12340):    at android.os.Handler.dispatchMessage(Handler.java)
E/AndroidRuntime(12340):    at android.os.Looper.loop(Looper.java)
E/AndroidRuntime(12340):    at android.app.ActivityThread.main(ActivityThread.java)
E/AndroidRuntime(12340):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(12340):    at java.lang.reflect.Method.invoke(Method.java)
E/AndroidRuntime(12340):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
E/AndroidRuntime(12340):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
E/AndroidRuntime(12340):    at dalvik.system.NativeStart.main(Native Method)

我在整个互联网上搜索了一个修复程序,尝试了重新安装罐子、修复建筑路径、清洁项目以及我能找到的所有东西。什么都帮不上忙。

如果有什么事我忘了提,让我知道,以便我可以添加它。如果需要,我可以添加我的项目设置的屏幕截图。

谢谢!

编辑:下面是一个包含完整日志的屏幕:http://img823.imageshack.us/img823/7144/54gx.png

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-27 21:06:30

您试图使用的库似乎严重依赖于java.beans反射。然而,在Android package are available上。

VerifyError的原因是在类加载时缺少类、字段和方法。

要么自己把库移植到Android,要么放弃它,转而使用Android上现成的机制和库。

票数 0
EN

Stack Overflow用户

发布于 2016-09-08 18:53:57

我在一个Android项目上遇到了同样的问题,发现删除int.class并将字符串转换为Integer似乎是有效的。

变化

代码语言:javascript
复制
int refresh_interval = ini.get("Throttle", "refresh_interval", int.class);

代码语言:javascript
复制
int refresh_interval = Integer.parseInt(ini.get("Throttle", "refresh_interval"));

而且它应该能工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20792637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档