如何知道 class 来自 Java
How to know where the class is coming from in Java
我今天遇到了一个非常令人困惑的问题,我的电子邮件服务,我使用的是简单的-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 enforcer 插件来发现发生了什么,但没有任何线索。
问题是如何发现运行时 class 来自哪个 jar 或库?
通过这段代码,您可以找出 class 的来源,然后立即找到 class 的来源:
Class klass = Class.forName("javax.mail.Service");
URL location = klass.getResource('/' + klass.getName().replace('.', '/') + ".class");
System.out.println(location);
现在您可以知道 javax.mail.Service 驻留在哪个 JAR 中。
我今天遇到了一个非常令人困惑的问题,我的电子邮件服务,我使用的是简单的-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 enforcer 插件来发现发生了什么,但没有任何线索。
问题是如何发现运行时 class 来自哪个 jar 或库?
通过这段代码,您可以找出 class 的来源,然后立即找到 class 的来源:
Class klass = Class.forName("javax.mail.Service");
URL location = klass.getResource('/' + klass.getName().replace('.', '/') + ".class");
System.out.println(location);
现在您可以知道 javax.mail.Service 驻留在哪个 JAR 中。