2012-09-27 10 views
8

Mam wdrożoną aplikację internetową do aparatu aplikacji Google, a moja usługa internetowa korzysta z frameworka 1.14. Kiedy próbuję zużywać lub wywoływać usługi sieciowe na GAE, otrzymuję klasę implementacji java.lang.IncompatibleClassChangeError. Przeszukałem i zorientowałem się, że koszulka 1.14 zależy od wersji 3.1, a silnik aplikacji Google używa pakietu asm 4.0 i zdaję sobie sprawę, że muszę użyć JarJar do spakowania zależności, aby rozwiązać ten problem, ale nie mam pojęcia, jak to zrobić z JarJar. Samouczek, który znalazłem, był bardzo tajemniczy i nastawiony na programistów doświadczenia. Czy ktoś może napisać samouczek, który jest nastawiony na początkującego lub przejść przez kolejne kroki, aby rozwiązać ten problem.przy użyciu narzędzia do przepakowywania JarJar

Odpowiedz

0

Możesz użyć polecenia jar jdk do wyodrębnienia i scalenia plików JAR.
jar -xvf firstjar.jar .... będzie wyodrębnić klasach jar folder/pakiet mądry -Com/pak1/PAK2
Teraz sam ekstrakt drugi słoik i połączyć obie rozszerzony foldery
Nie można utworzyć pojedynczy słoik połączonych plików klas.
jar -cvf mergedjar.jar [nazwa folderu [ex com org ...]], aby uzyskać szczegółowe informacje, sprawdź, jak działają komendy jar.

+0

To nie pomoże, ponieważ w klasach uruchomieniowych o tej samej pełnej nazwie zderzą się. _Jarjar_ robi coś więcej niż tylko łączenie słoików. Wciąż jednak muszę sam się o tym zatroszczyć. – vadipp

9

Cóż, jest to dość późna odpowiedź, ale jeśli ktoś przez nią przechodzi, może to pomóc. Podam przykład i wyjaśnię to. jarjar może być użyty do przepakowania bibliotek java. może być użyty do zmiany przestrzeni nazw, na przykład org.apache.common.codec należy zmienić na some_random_name.org.apache.common.codec. Pobierz jarjar z jarjar download site później wkleić plik jar, który chcesz zmienić (myinjar.jar) i pobranego jarjar do jednego folderu i uruchom to polecenie java -jar jarjar-1.4.jar process myrules.txt myinjar.jar myoutjar.jar w myrules.txt dodać te linie

rule org.apache.commons.codec.** [email protected] 

myoutjar.jar wyjście będzie zapisany w tym samym folderze i można go używać w projekcie bez konfliktów.

+0

Otrzymuję komunikat "Błąd składni: Zduplikowane wpisy JAR: META-INF/LICENSE.txt' –

+0

gikarasojo może to [link] (http://stackoverflow.com/questions/31912459/duplicate-lib-file-copied-in-apk -meta-inf-license-txt-error-in-andorid-studio) może pomóc –

+0

Mam skomplikowany przypadek. chcę użyć niektórych funkcjonalności pod warunkiem, że biblioteka 'm.jar' ta biblioteka wymaga, że ​​używam klasy' BindingProvider', który znajduje się w pakiecie 'javax', ale nie jest w systemie Android. w związku z tym musiałem pobrać kolejny słoik o nazwie 'android-ws-combine.jar'. kiedy dodałem go do mojego modułu i próbowałem go uruchomić, mam błąd "Błąd: przetwarzanie problemów" javax/xml/XMLConstants.class ":'. myślałem, że przepakowanie 'android-ws-Combine.jar' pomoże, ale mój inny słoik' m.jar' również zgłasza pewne błędy, ponieważ nie może znaleźć 'javax.BindingProvider', ponieważ zmieniłem nazwę na pakiet' javax', gdy jesteś w stanie repa –

Powiązane problemy