2011-10-03 4 views
1

Eclipse Indigo에서 만든 기본 Android 프로젝트가 있습니다. 내 빌드 경로에 제 3 자 라이브러리가 있는데,이 라이브러리는 초기 활동에서 해당 라이브러리의 클래스를 인스턴스화 할 때 사용됩니다. 이 10-02 19:51:17.311: ERROR/AndroidRuntime(314): java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init>빌드 경로상의 메소드에 대해 java.lang.NoSuchMethodError

이전 로그 캣에서, 나는 다음과 같은 오류 메시지를 관찰 할 :

앱 빌드 잘하지만, 나는 다음과 같은 오류가 발생 이 클래스는 제 3 자에 포함되어 10-02 19:50:48.670: DEBUG/dalvikvm(295): DexOpt: not verifying 'Lorg/apache/http/conn/scheme/Scheme;': multiple definitions

항아리; 안드로이드 어쨌든/어딘가에 충돌이나 "다중 정의"의 다른 소스를 제안하는 데 사용됩니까?

감사합니다.

+1

Android SDK에서 이미 사용할 수있는 것 같습니다. http://developer.android.com/reference/org/apache/http/conn/scheme/package-summary.html – Jack

+0

Jack을 지적 해 주셔서 감사합니다. 충돌을 어떻게 조정합니까? 제 3 자 JAR을 열어서 충돌하는 파일을 제외 시키려면 어떻게해야합니까? –

+0

백만 달러의 질문입니다. 수입품을 확인하여 Android에 포함 된 것을 사용하고 있지 않은지 확인 했습니까? 또한 -이 써드 파티 병은 무엇입니까? 어쩌면 다른 누군가가 이것을 경험하고 해결책을 알고있을 것입니다. – Jack

답변

0

How does one reconcile the conflict - do I have crack open the third-party JAR and exclude the conflicting files?

분명히 시도 할 수는 있겠지만 이것이 도움이되지 않는다고 생각합니다. 누군가가 Scheme에있는 메소드를 호출하려고 시도하는 것으로 보입니다.이 메소드는 JAR의 해당 개인용 사본에있을 수 있지만 Android SDK에는 없습니다.

해당 타사 JAR이 Apache HttpClient 인 경우 HttpClient가 이미 Android의 일부이므로 해당 JAR을 빌드 경로에 두지 말고 SDK에있는 메소드를 사용하십시오. 타사 JAR이 이 아니고 Apache HttpClient 인 경우 중복 된 org.apache.http 클래스를 제거하면 해당 클래스의 자체 버전에 따라 다른 문제가 발생합니다. 그렇다면 JAR에 대한 Android 지원에서 협력하기 위해 타사 개발자에게 직접 문의해야합니다. 너 이 도구를 사용하여 jarjar과 같은 도구를 사용할 수는 있지만 그다지 중요하지 않습니다.

0

jarjar과 같은 것을 시도해 볼 수 있습니다. 병을 열어 패키지를 빌드 할 때 다른 경로로 바꿀 수 있습니다. 이렇게하면 충돌하는 것과 같은 충돌을 피할 수 있습니다. 안드로이드와 잘 작동하는지 모르겠습니다.

관련 문제