2013-05-13 1 views
4

Eclipse에서 Android 용 클래스 패키지를 작성하고 테스트 패키지를 두 번째 패키지에 보관하여 Android 프로젝트에서 테스트했습니다. 그런 다음 커맨드 라인을 사용하여 프로젝트의 bin/classes 디렉토리 (모든 라이브러리 패키지, 테스트 패키지가 아님)의 모든 카세트에서 jar 파일을 작성했습니다. "jar tf"를 실행하면 모든 패키지 클래스가 올바르게 접두사로 표시됩니다 . 내 항아리를 추가 할 수 그때 바로 내 새로운 프로젝트를 클릭Eclipse의 Android 프로젝트에 항아리 가져 오기에 실패한 클래스 링크를 가져 오는 이유는 무엇입니까?

import uk.me.stevewaring.nestedsettings.NestedSettingsCommon; 
import uk.me.stevewaring.nestedsettings.NestedSettingsReformat; 
public class ShowNestedSettings extends Activity implements NestedSettingsReformat 
{... 

및 사용 빌드 경로 :

나는 다음과 같이 내 첫 번째 패키지를 가져온 방법을 사용하는 활동과 다른 안드로이드 프로젝트를 만들었습니다. 내 항아리는 라이브러리 아래의 Java 빌드 경로 맨 위와 주문 및 내보내기 아래의 맨 아래에 표시됩니다.

내 항아리를 추가하면 내 패키지의 메소드에 대해 불평하는 lint의 모든 빨간색 구불 구불 한 선이 사라졌습니다.

04-27 05:45:44.180: I/dalvikvm(14576): Failed resolving Lcom/example/shownestedsettings/ShowNestedSettings; interface 553 'Luk/me/stevewaring/nestedsettings/NestedSettingsReformat;'  
04-27 05:45:44.210: W/dalvikvm(14576): Link of class 'Lcom/example/shownestedsettings/ShowNestedSettings;' failed 

를 실행하는 클래스가 존재하지 않기 때문에 그 실행은 실패

그러나 나는 LogCat에서 내가 얻을, 내 프로젝트를 디버깅 할 때.

원래 프로젝트를 만들 때 "Mark this project as a library"이라는 상자를 체크하지 않았습니까? 그게 문제 일 수 있습니까? 확인란의 효과가 확실하지 않습니다. 그게 문제라면, 그 행동을 소급 적용 할 방법이 있을까, 아니면 jar 파일을 만들기 전에 완전히 새로운 프로젝트를 만들어 내 패키지를 복사해야할까요? 그게 문제가 아니라면, 내가 뭘 잘못 했니?

추가 정보 : 첫 번째 내 활동이 이루어 호출, NestedSettingsCommon.initialise이 나를 놀라게하지 않았다

04-27 05:52:10.919: I/dalvikvm(14677): Could not find method uk.me.stevewaring.nestedsettings.NestedSettingsCommon.initialise, referenced from method com.example.shownestedsettings.ShowNestedSettings.onCreate 
04-27 05:52:10.949: W/dalvikvm(14677): VFY: unable to resolve static method 3566: Luk/me/stevewaring/nestedsettings/NestedSettingsCommon;.initialise (Landroid/app/Activity;)V 
04-27 05:52:10.949: D/dalvikvm(14677): VFY: replacing opcode 0x71 at 0x0003 

했다 : 나는 디버깅하려고 할 때 내가 다음 인터페이스의 구현을 제거,이 수신 내 항아리에 코드를 넣으십시오.

또한 Jar을 명령 줄에서 만드는 대신 Eclipse에서 내보내려고했습니다. 그것은 아무런 차이도 만들지 않았다.

+1

주문 및 내보내기에서, 당신은 JAR 파일을 수출하고, 올바른 ? 라이브러리가 이미 기기에 설치되어 있지 않다면 의심 스럽습니다. – Guardanis

+1

Import External Jar 옵션을 사용했습니다. Eclipse가 다른 작업을 수행하는 경우 (jar) 첫 번째 프로젝트에서 클래스를 내보내려고했지만 두 번째 프로젝트에서 원래 jar 파일을 제거하고 Eclipse에서 만든 클래스를 추가해도 아무런 차이가 없습니다. –

+0

프로젝트> 속성> Java 빌드 경로> 주문 및 내보내기를 클릭하면 라이브러리가 선택되어 있습니까? 아마도 그럴 필요가있을 것입니다. – Guardanis

답변

15

JAR 파일이 응용 프로그램과 함께 내보낼 수 설정되어 있는지 확인합니다 :

프로젝트> 특성> Java 빌드 경로> 주문 및 내보내기

+1

고마워요! 나는 머리를 찢기 시작했다. – alekop

+0

어떻게하면 Android Studio에서이 작업을 수행 할 수 있습니까? 정말 솔루션이 필요합니다 ... – user198923

+0

빠른 google : http://stackoverflow.com/a/20314875/1426565 – Guardanis

관련 문제