получить исключение java / tomcat только на 1 или 4 серверах - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть java веб-приложение, работающее на 4 серверах. Самый новый сервер (только настройка) завершается с ошибкой "java .lang.NoSuchMethodError: org.htmlparser.lexer.Lexer.parseCDATA () Lorg / htmlparser / Node" при запуске кода ниже.

У меня 1 сервер работает локально на моей ма c. На 2 серверах работает Centos 6.10 / java 1.8.0_242 / tomcat-8.5.54 На последнем сервере (на котором происходит сбой) работает Centos 6.10 / java 1.8.0_242 / tomcat-8.5.54

Я скопировал все банки с рабочего сервера Centos на сломанный

Я в растерянности. Хотелось бы услышать некоторые идеи о том, как отладить / разрешить это ....

Запуск кода довольно прост. Другая часть, которая также смущает меня, это если бы не был найден jar, то Parser.createParser взорвалась бы и я добавил отладочный код, чтобы убедиться, что parser_ c не равно нулю

import org.htmlparser.Node;
import org.htmlparser.Parser;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.ParserException;

public class SignatureTools {
    public static String getURLFromSignature(String signature) throws ParserException {
        System.out.println("[getURLFromSignature]");
        if ( signature == null ){ return null;}
        Parser parser_c = Parser.createParser(signature, null);
        Node nodes_c[] = parser_c.extractAllNodesThatAre(LinkTag.class);
        String mkURL = null;
        for (Node node : nodes_c) {
            if (node != null && node instanceof LinkTag && ((LinkTag) node).getAttribute("href") != null) {
                String href = ((LinkTag) node).getAttribute("href");
                if ( href.contains("https://www.thedomain.com") ){
                    mkURL = href;
                }
            }
        }
        return URL;
    }
}

1 Ответ

0 голосов
/ 26 апреля 2020

обнаружил проблему ..

Я использовал этот бит кода и обнаружил, что Lexer загружается из другого jar вместо htmllexer.jar

Lexer lexer = new Lexer();
        try {
            System.out.println( "Lexer---->" + new File(Lexer.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getPath());
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
...