如何知道Java中的类来自何处

如何知道Java中的类来自何处,java,maven,jakarta-ee,Java,Maven,Jakarta 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 由于没有添加任何影响电子邮件的内容,我简直疯了。我尝试使用mave

今天我遇到了一个非常令人困惑的问题,我的电子邮件服务,我正在使用简单的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 enforcer插件来发现发生了什么,但毫无线索


问题是如何在运行时发现类来自哪个jar或库?

通过这段代码,您可以了解此类来自何处,从而立即找到类的源:

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

    System.out.println(location);
现在您可以知道javax.mail.Service驻留在哪个JAR中