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
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.
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.
Otrzymuję komunikat "Błąd składni: Zduplikowane wpisy JAR: META-INF/LICENSE.txt' –
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 –
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 –
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