今天,我遇到了一个非常令人困惑的问题,我的电子邮件服务(我使用的是简单Java邮件)突然停止发送所有消息。并且引发了异常:
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强制执行程序插件来发现正在发生的事情,但毫无头绪。
问题是,如何在运行时发现类来自哪个jar或库?
答案 0 :(得分:2)
使用此代码段,您可以弄清楚该类的来源,然后立即找到该类的来源:
Class klass = Class.forName("javax.mail.Service");
URL location = klass.getResource('/' + klass.getName().replace('.', '/') + ".class");
System.out.println(location);
现在您可以知道javax.mail.Service驻留在哪个JAR中。