我是java / eclipse开发的新手,我在使用我公司使用的Web应用程序中的特定jar调试代码时遇到了一些问题。
首先,我已正确设置Tomcat,并且可以成功运行webapp(除了我想要找到的错误!)。在web目录的lib目录中有大约24个jar文件,当我尝试调试其他jar文件时,调试器正确捕获它们的断点,一切都很愉快。我在新jar中的代码中设置的断点被跳过,当我在调试堆栈中进一步捕获断点时,任何单击我感兴趣的类的尝试都会导致“Source not found”。
我单击“编辑源查找路径...”按钮,单击包含代码的项目,它只是返回“源未找到”错误。我已经尝试将查找路径设置为项目以及文件系统目录和工作区项目。每次都有相同的结果。
我对调试器如何将调试堆栈窗口中的特定函数调用与源代码紧密联系起来有点模糊 - 它是否仅仅基于课程文件的包和类名?如果是这样,我不明白为什么它不起作用。
有什么想法吗?
答案 0 :(得分:0)
确保您指向正确的目录。如果该类是com.foo.SomeClass,则需要将src目录设置为基目录,以便Eclipse可以找到$ basedir / com / foo / SomeClass.java。这不一定是项目的根,可能是$ project / src,甚至是Maven项目的$ project / src / main / java。
答案 1 :(得分:0)
原来我错过了一个项目被重命名,移动到另一个仓库并且具有几乎相同的包名称的事实......操作词是“几乎”。谢谢locka唯一的回应!
com.companyname.java.x.y.z.classname != com.companyname.java.y.z.classname
答案 2 :(得分:0)
我有一个建议以另一种方式解决您的问题: 如果你想调试一些不包括tomcat lib或其他lib绑定到Tomcat的东西,比如需要处理请求和响应的struts2。
即使使用弹簧也请在主要功能中运行程序;
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"classpath*:/applicationContext.*.xml"); // check your applicationCntext formate , maybe applicationContext-*.xml ;
context.afterPropertiesSet();
find(context);
}
private static void find(ClassPathXmlApplicationContext context) {
Map beans = getContext().getBeansOfType(SomeCLass.class);
SomeCLass bean=beans.values().iterator().next();
bean.callFunction();
}