java - 如何通过进入我在 Visual Studio Code 中拥有源代码的 jar 文件代码来调试代码?
问题描述
我是一名 C#、C++ 开发人员。如果我有外部 dll 的代码和 pdb,我可以通过将 IDE 指向代码和/或 PDB 来进入外部 dll 的代码。我想用 Java JAR 做类似的事情
我使用 Visual Studio 代码在 java 中创建了一个微服务框架。这会编译成一个 jar 文件。我有另一个正在使用这个 jar 文件的应用程序。在调试应用程序时,如何单步执行微服务 jar 的代码?
我正在使用 VS Code 1.45.1、zulu 14、maven 3.6.3
假设我有一个名为 MyMaths.jar 的 jar 文件,里面有一个 mybasicmaths 类
public class MyBasicMaths{
public int addNums(int a, int b) {
return a+b;
}
}
另一个使用 MyMaths.jar 的应用程序正在使用这个 jar。我已经使用 Maven 解决了依赖关系。在客户端应用程序中,我有类似的代码
public class MyMathsConsumer {
public static void main(String[] args) {
int a = 10;
int b = 20
MyBasicMaths myObj = new myBasicMaths();
int c = myObj.addNums(10, 20);
System.out.println(c);
}
}
我能够很好地运行我的项目。但我希望能够从 MyMathsConsumer 进入 MyBasicMaths.addNums() 的代码。
当我调试时,我可以进入 amqp-client-5.7.3.jar 甚至 zulu 类,但不能进入我创建的 jar 文件。
类似的问题已经被问到了 Eclipse Attach the Source in Eclipse of a jar
我对 Visual Studio Code 也有同样的要求。
解决方案
(来自https://code.visualstudio.com/docs/java/java-project)
默认情况下,引用
{binary}.jar
将尝试{binary}-sources.jar
在同一目录下搜索,如果找到匹配项,则将其附加为源。如果要手动指定 JAR 文件作为源附件,可以在源字段中提供键值映射:
"java.project.referencedLibraries": { "include": [ "library/**/*.jar", "/home/username/lib/foo.jar" ], "exclude": [ "library/sources/**" ], "sources": { "library/bar.jar": "library/sources/bar-src.jar" } }
推荐阅读
- javascript - 反应本机 DeviceEventEmitter 取消订阅事件
- google-apps-script - 表格 - 脚本 - 使用脚本限制从 CSV 导入的行数?
- javascript - 在 ec2 中为 reactjs 运行 npm start 时出错
- c# - RavenDB where 子句的自定义表达式:字段包含提供的数组中的任何项目
- java - 如何在 tomcat 服务器上为多个 Web 应用程序实例传递单独的命令行参数
- java - 使用 charAt 比较 Java 中的两个字符串
- android - 为移动应用创建一个链接,根据用户使用的设备重定向用户,并将 UTM 发送到 Play 商店和应用商店
- angular - Firebase缺少角度和离子中的应用程序配置值
- javascript - 向下滚动时,粘性标题过渡变得跳跃和难看
- python - 如何在执行我们通过pyinstaller生成的可执行文件时隐藏黑屏?