2013-03-25 9 views
4

當我按下一個啓動MainActivity中的方法的按鈕時,出現「java.lang.IllegalAccessError class ref in preverified class resolved to unexpected implementation」錯誤應該開始一個新的活動。我能做些什麼來解決這個問題?這是我第一次嘗試做一個Android應用程序,所以生病需要一步一步的指示:)java.lang.IllegalAccessError class ref在預先驗證的類中已解析爲意外的實現

此外,我還沒有能夠測試它是否工作,但如果您發現我的AugiActivity服務實施或本地任何錯誤廣播實施隨時讓我知道。

謝謝!

FYI:MainActivity開始導航活動,啓動服務AugiActivity

AUGI活動發送本地廣播消息導航

的logcat:

03-24 20:01:56.632: E/AndroidRuntime(11183): FATAL EXCEPTION: main 
03-24 20:01:56.632: E/AndroidRuntime(11183): java.lang.IllegalStateException: Could not  
execute method of the activity 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
android.view.View$1.onClick(View.java:2154) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
android.view.View.performClick(View.java:2537) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
android.view.View$PerformClick.run(View.java:9157) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
android.os.Handler.handleCallback(Handler.java:587) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
android.os.Handler.dispatchMessage(Handler.java:92) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
android.os.Looper.loop(Looper.java:130) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
android.app.ActivityThread.main(ActivityThread.java:3687) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
java.lang.reflect.Method.invokeNative(Native Method) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
java.lang.reflect.Method.invoke(Method.java:507) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
dalvik.system.NativeStart.main(Native Method) 
03-24 20:01:56.632: E/AndroidRuntime(11183): Caused by: 
java.lang.reflect.InvocationTargetException 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
java.lang.reflect.Method.invokeNative(Native Method) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
java.lang.reflect.Method.invoke(Method.java:507) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
android.view.View$1.onClick(View.java:2149) 
03-24 20:01:56.632: E/AndroidRuntime(11183): ... 11 more 
03-24 20:01:56.632: E/AndroidRuntime(11183): Caused by: java.lang.NoClassDefFoundError: 
com.example.augi_practice.Navigation 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
com.example.augi_practice.MainActivity.navigation(MainActivity.java:33) 
03-24 20:01:56.632: E/AndroidRuntime(11183): ... 14 more 
03-24 20:01:56.632: E/AndroidRuntime(11183): Caused by: java.lang.IllegalAccessError: 
Class ref in pre-verified class resolved to unexpected implementation 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
dalvik.system.DexFile.defineClass(Native Method) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
dalvik.system.DexFile.loadClassBinaryName(DexFile.java:207) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
dalvik.system.PathClassLoader.findClass(PathClassLoader.java:200) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
03-24 20:01:56.632: E/AndroidRuntime(11183): at 
java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
03-24 20:01:56.632: E/AndroidRuntime(11183): ... 15 more 

XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.augi_practice" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="3" 
    android:targetSdkVersion="10" /> 

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.BLUETOOTH" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 


<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.augi_practice.MainActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="landscape" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" 
/> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.example.augi_practice.Navigation" 
     android:label="@string/title_activity_navigation" 
     android:screenOrientation="landscape" > 
    </activity> 
    <service 
     android:name="com.example.augi_practice.AugiActivity" 
     android:label="@string/title_activity_augi" 
     android:parentActivityName="com.example.augi_practice.Navigation" 
     android:screenOrientation="landscape" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.example.augi_practice.Navigation" />    
    </service>  
    <uses-library android:name="com.google.android.maps" />  
</application> 

</manifest> 

主要活動:

package com.example.augi_practice; 

import ioio.lib.util.android.IOIOActivity; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 

public class MainActivity extends Activity { 

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

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

public void call_ioio(View v) 
{ 
    Intent intent = new Intent(this, AugiActivity.class); 
    startActivity(intent); 
} 

public void navigation(View v) 
{ 
    Intent intent = new Intent(this, Navigation.class); 
    startActivity(intent); 
} 

} 

導航活動:

package com.example.augi_practice; 

// Lots of imports here 


public class Navigation extends MapActivity implements Runnable, 
SurfaceHolder.Callback{ 

String LED = null; 
String MAG = null; 
String BAR = null; 
String GYRO = null; 
String EULER = null;  
String GGA = null; 

private BroadcastReceiver MessageReceiver = new BroadcastReceiver() 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     LED = intent.getStringExtra("LED"); 
     MAG = intent.getStringExtra("MAG"); 
     BAR = intent.getStringExtra("BAR"); 
     GYRO = intent.getStringExtra("GYRO"); 
     EULER = intent.getStringExtra("EULER"); 
     GGA = intent.getStringExtra("GGA");   
    } 
}; 

// More global variables 

// Lots of gui variables here 

// More global variables 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_navigation); 
    MapView mapview = (MapView) findViewById(R.id.mapview); 
    mapview.setBuiltInZoomControls(true); 

    getWindow().setFormat(PixelFormat.UNKNOWN); 

    // Camera configuration settings 

    LocalBroadcastManager.getInstance(this).registerReceiver(MessageReceiver, 
new IntentFilter("IOIOData")); 

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

      // Lots of links from acivity to gui 

    startService(new Intent(this, AugiActivity.class));   
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_navigation, menu); 
    return true; 
} 

@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
} 

@Override 
public void surfaceChanged(SurfaceHolder holder, int format, int width, 
     int height) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void surfaceCreated(SurfaceHolder holder) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void surfaceDestroyed(SurfaceHolder holder) { 
    // TODO Auto-generated method stub 

} 

public void sensorLayer(View v) 
{ 
    // Executes some code 
} 

public void mapLayer(View v) 
{ 
    // Executes some code 
} 

public void cameraLayer(View v) 
{ 
    // Executes some code 
} 

@Override 
public void run() { 
    //Executes some code 
} 
} 

AugiActivity的部分:

package com.example.augi_practice; 

//lots of imports here 


public class AugiActivity extends Service { 

public Activity activity_name; 

class IOIO extends IOIOActivity { 


// Lots of global variables 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    activity_name = this.getParent(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present.   
    return true; 
} 

class Looper extends BaseIOIOLooper { 
    /** The on-board LED. */ 
    // Class variables 

    public Activity activity_name; 

    Looper(Activity x) 
    { 
     this.activity_name = x; 
    }  

    // More class variables 

    /** 
    * Called every time a connection with IOIO has been established. 
    * Typically used to open pins. 
    * 
    * @throws ConnectionLostException 
    *    When IOIO connection is lost. 
    * @throws InterruptedException 
    * 
    * @see ioio.lib.util.AbstractIOIOActivity.IOIOThread#setup() 
    */ 
     @Override 
     protected void setup() throws ConnectionLostException, 
InterruptedException 
     { 
      // establish various connections here 

      bar_calibration();  
      mag_setup(); 
      imu_setup();  
      try { 
       gps_setup(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

     // Various setup methods here 

    /** 
    * Called repetitively while the IOIO is connected. 
    * 
    * @throws ConnectionLostException 
    *    When IOIO connection is lost. 
    * @throws InterruptedException 
    * 
    * @see ioio.lib.util.AbstractIOIOActivity.IOIOThread#loop() 
    */ 


    @Override 
     public void loop() throws ConnectionLostException, 
InterruptedException 
     {   
      get_light(); 

      get_temp(); 

      get_pressure(); 

      get_north(); 

      get_imu(); 

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

      led_.write(true); 

      sendMessage(); 
     } 

     // Various methodes to get data 

     private void sendMessage() 
     { 
      Intent intent = new Intent("IOIOData");  

      intent.putExtra("LED", get_LED()); 

LocalBroadcastManager.getInstance(activity_name).sendBroadcast(intent); 

      intent.putExtra("MAG", get_MAG()); 

LocalBroadcastManager.getInstance(activity_name).sendBroadcast(intent); 

      intent.putExtra("BAR", get_BAR()); 

LocalBroadcastManager.getInstance(activity_name).sendBroadcast(intent); 

      intent.putExtra("GYRO", get_GYRO()); 

LocalBroadcastManager.getInstance(activity_name).sendBroadcast(intent); 

      intent.putExtra("EULER", get_EULER()); 

LocalBroadcastManager.getInstance(activity_name).sendBroadcast(intent); 

      intent.putExtra("GGA", gps_GGA); 

LocalBroadcastManager.getInstance(activity_name).sendBroadcast(intent); 
     } 
    } 
+0

請參閱[this](http://forum.xda-developers.com/showthread.php?t=1072256)和[this](https://groups.google.com/forum/?fromgroups=# !topic/android-developers/NBMU9wRVnLc) – m0skit0 2013-03-25 00:39:07

+0

嘗試更新Intent intent = new Intent(this,Navigation.class);以意圖intent =新的意圖(getApplicationContext(),Navigation.class); startActivity(intent); – minhaz 2013-03-25 00:55:05

+0

我試過minhaz的建議,它似乎沒有幫助。我得到了同樣的錯誤。 – 2013-03-25 02:01:14

回答

-1

我解決它。似乎在libs文件夾中包含maps.jar文件是個不錯的主意。刪除它糾正了這個問題。謝謝大家。

+9

這不是一個答案。有人知道如何將它保存在庫中,但使其工作? – halxinate 2013-05-08 22:44:14

10

在我的情況下,我改變了Intelij Idea的項目設置。轉到模塊 - >依賴項,然後將lib的範圍設置爲'已提供'。

在打開模塊設置 -
+0

這對我有用!標記爲答案? – JohnyTex 2016-01-20 11:14:40

+0

如果有人在最​​新版本的Android Studio(1.5.1)中查找此選項。它位於文件>項目結構> [您的應用程序的模塊]>依賴項下。 – 2016-03-14 05:17:47

1

>依賴性

設定範圍爲線

{包括= [*。罐子],DIR =庫}

到提供

工作了我

相關問題