2017-03-03 10 views
0

私は開発者ではありません。数週間前にアンドロイドの学習を始めました。 エラー:私は「onClickのjava.lang.IllegalStateExceptionは、アンドロイドのための方法を実行できませんでした」java.lang.IllegalStateException:JSONParserを試すときにアンドロイド:onClickのメソッドを実行できませんでした

に実行しています。私は似たような問題を読んできましたが、私がここで読んだのと同じ解決策を試しました試してみるとクラッシュするようです。JSONParserパーサー=新しいJSONParser() - 私はそう思います。しかし、アンドロイドアプリのボタンをクリックすると「clickme」が発生することがわかります。

もっと経験豊富な人が私を助けることができたら、私は感謝します。

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    //Thread Policy 
    StrictMode.ThreadPolicy policy = new  StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 

    } 

    public void clickme (View view) { 

     JSONParser parser = new JSONParser(); 

     try { 
      Object obj = parser.parse(new FileReader("assets/StockDB.json")); 

      JSONObject jsonObject = (JSONObject) obj; 

      JSONArray stockInfo = (JSONArray) jsonObject.get("Watchlist"); 

      for (Object c : stockInfo) 
      { 

       JSONObject f = (JSONObject) c; 
       String m = (String) f.get("Company"); 
       String t = (String) f.get("Ticker"); 

       System.out.println(m); 
       System.out.println(t); 
      } 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

Logcat:

3月3日17:02:12.415:D/AndroidRuntime(22035):02:12.425:E/AndroidRuntime(22035):VM 03から03 17をシャットダウンFATAL例外:メイン 03-03 17:02:12.425:E/AndroidRuntime(22035):プロセス:com.example.stockiodebug、PID:22035 03-03 17:02:12.425:E/AndroidRuntime(22035):java。 lang.IllegalStateException:アンドロイドのメソッドを実行できませんでした:onClick 03-03 17:02:12.425:E/AndroidRuntime(22035):android.view.View $ DeclaredOnClickListener.onClick(View.java:4740) 03-03 17:02:12.425:E/AndroidRunti android.widget.TextView.performClick(TextView.java:22035):android.view.View.performClick(View.java:5697) 03-03 17:02:12.425:E/AndroidRuntime(22035):android.widget.TextView.performClick 10815) 03-03 17:02:12.425:E/AndroidRuntime(22035):android.view.View $ PerformClick.run(View.java:22526) 03-03 17:02:12.425:E/AndroidRuntime 2235):android.os.Handler.handleCallback(Handler.java:739) 03-03 17:02:12.425:E/AndroidRuntime(22035):android.os.Handler.dispatchMessage(Handler.java:95)03-03 17:02:12.425:E/AndroidRuntime(22035):at android.app.ActivityThread.main(ActivityThread.java:7229) 03-03 17:02:12.425:E/AndroidRuntime(22035):java.lang.reflect.Method.invoke(ネイティブメソッド) 03-03 17:02:12.425:E/AndroidRuntime(22035):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1230) 03-03 17:02:12.425:E/AndroidRuntime(22035):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 03-03 17:02:12.425:E/AndroidRuntime(22035):原因:java.lang.reflect。 InvocationTargetException 03-03 17:02:12.425:E/AndroidRuntime(22035):java.lang.reflect.Method.invoke(ネイティブメソッド) 03-03 17:02:12.425:E/AndroidRuntime(22035):at android.view.View $ DeclaredOnClickListener.onClick(View.java:4735) 03-03 17:02:12.425:E/AndroidRuntime(22035):...続きを読む 03-03 17:02:12.425:E/AndroidRuntime(22035):原因:java.lang.NoClassDefFoundError:Lorg/json/simple/parser/JSONParserの解決に失敗しました。03-03 17:02:12.425:E/AndroidRuntime(22035) :... 12詳細 03-03 17:02:12.425:E/AndroidRuntime(22035):原因:java.lang.ClassNotFoundException:パスにクラス "org.json.simple.parser.JSONParser"が見つかりませんでした:DexPathList [[zipファイル "/data/app/com.example.stockiodebug-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.stockiodebug-2/lib/arm64、/ vendor/lib64 、/ system/lib64] 03-03 17:02:12.425:E/AndroidRuntime(22035):dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 03-03 17:02:12.425:E/AndroidRuntime(22035):java.lang.ClassLoader.loadClass(ClassLoader。java/511) 03-03 17:02:12.425:E/AndroidRuntime(22035):java.lang.ClassLoader.loadClass(ClassLoader.java:469) 03-03 17:02:12.425:E/AndroidRuntime 22035):... 13 more 03-03 17:02:12.425:E/AndroidRuntime(22035):java.lang.ClassNotFoundException:org.json.simple.parser.JSONParser 03-03 17:02: 12.425:E/AndroidRuntime(22035):java.lang.Class.classForName(ネイティブメソッド) 03-03 17:02:12.425:E/AndroidRuntime(22035):java.lang.BootClassLoader.findClass(ClassLoader.java) :781) 03-03 17:02:12.425:E/AndroidRuntime(22035):java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 03-03 17:02:12.425:E/AndroidRuntime(22035) ):java.lang.ClassLoader.loadClass(ClassLoader.java:504) 03-03 17:02:12.425:E/AndroidRuntime(220 35):... 14 more 03-03 17:02:12.425:E/AndroidRuntime(22035):原因:java.lang.NoClassDefFoundError:クラスがブートクラスローダーを使用して見つかりませんでした。使用可能なスタックトレースがありません

+0

プロジェクトの「libs」ディレクトリに移動し、そこに_org.json.simple.parser.JSONParser_関連_.jar_が配置されていることを確認します。このようなエラーは、_JVM_が_classpath_で必要なクラスを見つけることができない場合に発生します。 –

+0

私は以下の答えを追加しました。 libsフォルダに.jarを追加することを提案した場合、私の答えを受け入れてください。 –

答えて

0

プロジェクトの「libs」ディレクトリに移動し、org.json.simple.parser.JSONParser関連の.jarがそこに配置されていることを確認します。このようなエラーは、JVMがクラスパスで必要なクラスを見つけられない場合に発生します。

0

このエラーは、ClassNotFoundExceptionをスローし、例外チェーン内にIllegalStateExceptionを生成するために発生しています。

コードにorg.json.simple.parser.JSONParserが見つかりません。

JsonParserライブラリを実装してみてください。

+0

ありがとうございます。私はEclipseの中で、プロジェクト名 - >プロパティ - > Javaビルドパス - >外部JARの追加を右クリックすると、プロジェクトにorg.jsonを追加することができたという印象を受けました。私はlibsフォルダにもコピーしなければならないことは知らなかった。 – user7655804

関連する問題