【问题标题】:Force JAVA project to use .java files instead of JRE lib .class files (with Eclipse)强制 JAVA 项目使用 .java 文件而不是 JRE lib .class 文件(使用 Eclipse)
【发布时间】: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

How can I navigate to a .java file instead of a .class file with sourcepath specified in the classpath?

...

那么如何在 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”。

标签: java eclipse jar


【解决方案1】:

如果您想在调试库时查看源文件,您应该将源附加到 JAR 文件中。在eclipse中有很多方法可以做到这一点,其中一些你可以在这里查看

    1. 选择任何 Java 项目
    2. 扩展引用的库
    3. 选择任何 JAR 文件,在我们的例子中是 rt.jar,它是 Java 运行时
    4. 右键单击并转到属性
    5. 通过浏览源路径附加源代码

阅读更多:http://javarevisited.blogspot.com/2012/12/how-to-attach-source-in-eclipse-Jar-JDK-debugging.html#ixzz4ArDVQsub

您还应该确保 JAR 和源代码版本应该匹配,最好是从 Maven 存储库下载 JAR 和源代码。

【讨论】:

  • 工作正常,我现在可以使用远程调试来调试 JRE 系统库。但是我仍然无法使用服务器程序调试 .jar,正如我在 InternetAdress 类中的 me = InetAddress.getLocalHost(); 所说的那样,它停止了,没有错误消息! (当我使用调试远程调用 .jar 时工作正常......)有什么想法吗?
猜你喜欢
  • 2023-01-11
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
  • 1970-01-01
  • 2018-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多