2011-11-01 50 views
1

實質上:一個庫項目聲明瞭一個Activity,一個實現項目使用(子類)這個Activity和一個測試項目練習實現的版本。在這個場景中,我們發現「該類型無法解析,它是從所需的.class文件間接引用的」。如果更改爲ADT r13,則不報告問題。 代碼發行再現: 在庫:ADT中的Android庫:類型無法解析錯誤

package com.r14.error.lib; 
import android.app.Activity; 
import android.os.Bundle; 

public class R14ErrorLibActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

在實施:

package com.r14.error.imp; 
import com.r14.error.lib.R14ErrorLibActivity; 

public class R14ErrorImpActivity extends R14ErrorLibActivity { 
} 

在測試:

package com.r14.error.imp.test;  
import com.r14.error.imp.R14ErrorImpActivity;  
import android.test.ActivityUnitTestCase; 

public class R14ErrorLibImpActivityTest extends ActivityUnitTestCase<R14ErrorImpActivity> {  
    public R14ErrorLibImpActivityTest() { 
     super(R14ErrorImpActivity.class); 
    }  
    private static final int ANSWER_TO_THE_ULTIMATE_QUESTION_OF_LIFE_THE_UNIVERSE_AND_EVERYTHING = 42;  
    public void testTest() { 
     assertEquals(ANSWER_TO_THE_ULTIMATE_QUESTION_OF_LIFE_THE_UNIVERSE_AND_EVERYTHING, 42); 
    }  
} 

錯誤:

The type com.r14.error.lib.R14ErrorLibActivity cannot be resolved. It is indirectly referenced from required .class files 

如果LIB是(在舊版本的ADT動作不是必要的)手動添加1沒有顯示生成錯誤,但測試失敗:

java.lang.RuntimeException: Exception during suite construction 
at android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:239) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:430) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) 
Caused by: java.lang.reflect.InvocationTargetException 
at com.r14.error.imp.test.R14ErrorLibImpActivityTest.<init>(R14ErrorLibImpActivityTest.java:10) 
at java.lang.reflect.Constructor.constructNative(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 
at android.test.suitebuilder.TestMethod.instantiateTest(TestMethod.java:87) 
at android.test.suitebuilder.TestMethod.createTest(TestMethod.java:73) 
at android.test.suitebuilder.TestSuiteBuilder.addTest(TestSuiteBuilder.java:263) 
at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:185) 
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:336) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3982) 
at android.app.ActivityThread.access$2900(ActivityThread.java:119) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1901) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4363) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NoClassDefFoundError: com.r14.error.imp.R14ErrorImpActivity 
... 19 more 

我與Eclipse靛藍和ADT工作15

感謝任何幫助!

+0

http://kyleclegg.com/eclipse-android-error-type-cannot-be-resolved/ –

+0

@ Dr.nik:感謝您的線索。如果手動添加庫(在舊版adt版本中不需要該操作),則不會顯示構建類型錯誤,但測試失敗並且添加了該消息以發佈。 – ARNeto

回答

2

這已經是Android開放手機聯盟項目中的一個問題(21343)。如果您遇到同樣的問題,請將此問題列爲明星。 注意:問題seems fixed帶有Android SDK Tools和Eclipse ADT插件版本17(我自己的項目編譯時沒有黑客或錯誤)。這裏

相關問題