2015-12-29 3 views
5

Oto pytanie, które ostatnio zadawałem: org.apache.commons.codec.digest.Md5Crypt.md5Crypt function. exception occured under linux, but fine under windowsjaki jest związek między tomcat i jdk a aplikacją internetową?

Chociaż ostatecznie to rozwiązałem, ale nadal jestem zdezorientowany. Co się stało?

Mój jdk był 1,7, mój tomcat miał 7 lat, moja aplikacja internetowa została skompilowana przez jdk 1.7, wersja commons-codec.jar miała 1,10, a następnie został zgłoszony wyjątek.

java.lang.IllegalAccessError: tried to access method org.apache.commons.codec.digest.DigestUtils.getMd5Digest()Ljava/security/MessageDigest; from class org.apache.commons.codec.digest.Md5Crypt 

Kiedy zmieniłem mój kocur z 7 na 8, wszystko działało dobrze. Czemu? Co robi tomcat dla aplikacji?

+0

czy jesteś pewien, że zarówno tomcat korzystał z Java 7? –

+0

tak, jestem tego pewien. oba tomcaty używają JAVA_HOME. –

Odpowiedz

2

Zdecydowanie sugeruję, że problem nie został rozwiązany, ponieważ użyłeś tomcat 8 zamiast 7, ale został on rozwiązany, ponieważ występował konflikt w ścieżce budowania Java, co oznacza, że ​​w czasie wykonywania były dwie różne wersje JAR commons-codec prawdopodobnie miał jeden w twoim katalogu tomcat 7 lib.

+0

Możesz sprawdzić swoją poprzednią ścieżkę budowania, aby potwierdzić lub odrzucić moje roszczenia! – QuakeCore

+0

Sprawdziłem to wcześniej! Używam maven do zarządzania słoikami, jestem pewien, że jest tylko jeden słoik z kodekami. a tomcat został pobrany nowy. –

+0

Miałeś rację, znalazłem inny commons-kodek-dekoder został dołączony przez plik jar strony trzeciej w folderze WEB-INF/lib, i nie jest zarządzany przez maven, więc nie mogę tego znaleźć przez uzależnienie od maven. Usunąłem ten brzydki plik jar, działa dobrze. teraz mogę powiedzieć "rozwiązuję ten problem", prawda? Dziękuję Ci! –