1

私はwindozeのiniを好むので、ini4jを使用しています。この部分は、ファイルが存在することを確認します。

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() の下にあります)

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);

次のエラーが表示されます。

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)

インターネット全体で修正を検索し、jar の再インポート、ビルドパスの修正、プロジェクトのクリーニングなど、見つけたすべてのものを試しました。何も助けませんでした。

言い忘れたことがある場合は、追加できるようにお知らせください。必要に応じて、プロジェクトの設定のスクリーンショットを追加できます。

ありがとうございました!

編集: これは完全なログを含む画面です: http://img823.imageshack.us/img823/7144/54gx.png

4

2 に答える 2

1

Android プロジェクトで同じ問題に遭遇し、int.class を削除して String を Integer に自分で変換するとうまくいくようです。

変化する

int refresh_interval = ini.get("Throttle", "refresh_interval", int.class);

int refresh_interval = Integer.parseInt(ini.get("Throttle", "refresh_interval"));

そしてそれはうまくいくはずです。

于 2016-09-08T18:53:57.310 に答える
0

java.beans使用しようとしているライブラリは、リフレクションに大きく依存しているようです。ただし、Android ではパッケージの一部しかjava.beans利用できません。

s は、VerifyErrorクラスのロード時にクラス、フィールド、およびメソッドが欠落しているためです。

ライブラリを自分で Android に移植するか、Android ですぐに利用できるメカニズムとライブラリを優先して破棄します。

于 2013-12-27T21:06:30.037 に答える