2012-09-28 3 views
0

내 프로젝트에 대한 android SDK를 개발 중이며,이를 위해 google-http-java-client 을 sdk에 사용하고 있습니다. 내 앱에서 사용할 수 있도록 google-http-java-client에서 몇 가지 변경을하고 싶습니다. 예를 들어 com.google.api.client.http.HttpHeaders에 맞춤 헤더를 추가하고 싶습니다. 그게 내가 소스 코드를 추출했지만 메신저에서 오류가 발생 com.google.common.primitives.UnsignedBytes라이브러리를 수정하는 중 sun.misc.Unsafe로 오류가 발생했습니다.

가져 오기 sun.misc.Unsafe를 해결할 수 없습니다.

그래서이 라이브러리를 수정할 수있는 다른 방법이 있습니까 ???

답변

0

Google에서 제공하지 않는 Oracle/Sun JDK와 함께 shippped되는 것에 의존하고 있습니다. 짧은 대답 : 그렇게하지 마십시오. 긴 대답 : 'Why Developers Should Not Write Programs That Call 'sun' Packages'을 참조하십시오.

+0

이것은 내 프로젝트에이 라이브러리를 사용할 수 없다는 것을 의미합니다. – Prachi

+0

@curious_mind : 물론 컴파일 된 형식으로 사용하면 아무런 문제가 없습니다. 소스를 사용해야하는 경우에는 그 불쾌한 부분을 버려라. 필요한 경우를 제외하고는 전체 클래스'UnsignedBytes'를 생략 할 수 있습니다. – maaartinus

+0

@EJP : 당신은 틀렸어. 아무도 안전하지 못해. Guava 라이브러리에 표시되는 것처럼 그 사람이 아니며 대체 솔루션을 제공하기 때문에 의존하지 않습니다. – maaartinus

1

확실히. UnsafeComparatorUnsafe을 사용합니다.이 클래스는 기본 클래스 경로 android에 없지만 대체로 PureJavaComparator이 제공됩니다. Unsafe을 다루는 전체 파트를 제거하는 것은 getBestComparator() 에서처럼 이름을 통해 찾아지며 예외가 발생하면 폴백이 사용됩니다.


1 나는 그것이 안드로이드에 존재하지 않는 생각하지만, 내가 믿는

케빈은하지 말. 어쨌든, 그것이 기본 classpath에 없다는 것은 확실히 틀림 없다 (존재 여부에 상관없이).

+1

안드로이드에 sun.misc.Unsafe가 존재하지 않는 것이 확실합니까? 나는 매우 놀랄 것이다. 아마도 기본 컴파일 클래스 경로에 있지 않은 것 같습니다. –

+0

@Kevin Bourrillion : 나는 전혀 모르겠다. 그것은 내가들은 것을 기반으로 한 가정 일 뿐이다. 하지만 내 경험에 비추어 볼 때 클래스 패스에 포함 할 항목을 찾는 것보다 참조를 제거하는 것이 훨씬 빠를 수도 있습니다. – maaartinus

관련 문제