【发布时间】:2016-10-05 19:13:25
【问题描述】:
我使用 javamail 库(由 Oracle 开发),但遇到了一些问题。
当我使用 source 调用项目或在 本地或服务器上运行 .jar (java –jar mail.jar) 时 (运行在 AIX 7.1 版,java 版本“1.6.0”),收到邮件没问题。
但是当我用程序调用 .jar 时(都在服务器上),邮件发送停止。所以我尝试调试 javamail 库(带有源代码)以了解它停止的原因。
要使用 Eclipse 远程调试 java,我使用: java -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y -jar /users/java/mail.jar http://javarevisited.blogspot.fr/2011/02/how-to-setup-remote-debugging-in.html
...
我的第一个问题是 InternetAdress 类中的 .jar 停止:me = InetAddress.getLocalHost();,没有错误消息。
...
我的第二个问题是当我尝试进入 InetAdress 类并添加一个 System.out.println 时,.jar 无法通过这个类。至少不是我的:它使用 JRE 系统库类(所以不使用 println)。
我尝试将 JDK 项目从 1.8 更改为 1.5; 尝试组织构建路径(使用 Order 和 Export 选项,添加 java.net 库并将其放在顶部或底部); 试图从 jre lib 文件夹中删除 rt.jar;
没有任何变化……
我为我的第二个问题找到了一些问题,但对我没有太大帮助:
https://community.oracle.com/message/12729913
...
那么如何在 Eclipse 中强制 JAVA 项目使用 .java 文件而不是 JRE lib .class 文件呢?
...
javamail 来源: https://java.net/projects/javamail/pages/Home https://java.net/projects/javamail/downloads?page=1&path%5B%5D=source&theme=java.net
JDK 源码(以 javamail 源码补全): http://grepcode.com/project/repository.grepcode.com/java/root/jdk/openjdk/
【问题讨论】:
-
为什么要添加
System.out.println?您可以使用调试器查看变量值。 -
我想添加 System.out.println 因为当我用程序调用 .jar 时无法调试。我应该使用调试选项(使用程序)调用 .jar,但我不能。
-
“无法调试”是什么意思?您是否在怀疑发生异常的地方设置了停止点?
-
正如我所说,我可以在服务器上调用 .jar 时直接调试(使用调试命令行和 Eclipse 选项),但我无法更改服务器程序调用 .jar 的方式。 jar,也没有对 Eclipse 说“调试这个程序调用的编译好的 .jar”。