Как узнать, откуда приходит класс в Java - PullRequest
2 голосов
/ 25 июня 2019

Сегодня я столкнулся с очень запутанной проблемой, когда мой почтовый сервис, я использую simple-java-mail, внезапно прекратил отправлять все ... и возникло исключение:

Exception in thread "pool-3-thread-1" java.lang.NoSuchMethodError: com.sun.mail.util.TraceInputStream.(Ljava/io/InputStream;Lcom/sun/mail/util/MailLogger;)V

Я собиралсябезумно, так как ничего не влияющее на электронную почту было добавлено, я попытался использовать плагин maven inspecer, чтобы узнать, что происходит, но без подсказки.

Вопрос был в том, как определить, из какой jar-библиотеки или библиотеки поступает класс во время выполнения?

1 Ответ

2 голосов
/ 25 июня 2019

С помощью этого фрагмента вы можете выяснить, откуда взялся этот класс, и сразу найти источник класса:

    Class klass = Class.forName("javax.mail.Service");
    URL location = klass.getResource('/' + klass.getName().replace('.', '/') + ".class");

    System.out.println(location);

Теперь вы можете знать javax.mail.Service, в котором находится JAR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...