如何知道Java中的类来自哪里

时间:2019-06-24 21:58:48

标签: java maven java-ee

今天,我遇到了一个非常令人困惑的问题,我的电子邮件服务(我使用的是简单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或库?

1 个答案:

答案 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中。