我从第三方库中获取了一个类中的NullPointerException.现在我想调试整个事情,我需要知道该类所持有的对象.但在我看来,我无法在第三方的类中设置断点.
有谁知道摆脱困境的方法?当然我使用Eclipse作为我的IDE.
更新:该库是开源的.
我刚开始使用Eclipse,所以对我很轻松;).但是当我尝试调试JUnit测试用例时,我得到一个对话框,指出当我在我的测试方法的代码中找到这行时找不到源代码:
Assert.assertEquals(1, contents.size());
Run Code Online (Sandbox Code Playgroud)
我知道我应该去尝试从某个地方下载源代码,但我真的不想这样做,因为我没有兴趣进入JUnit代码.我有JUnit运行时jar所以为什么Eclipse希望我拥有所有引用的工具源代码以调试我自己的代码(看起来有点傻)?
我的主要问题是,如果源不可用,我如何告诉Eclipse跳过此对话框并允许我继续调试自己的代码?
[编辑]
我已经找到了原因.似乎Eclipse在内部JUnit代码抛出异常时似乎认为它需要源代码.一般来说,无论如何都要告诉它它没有,只是让它抛出某种错误对话框而不是?
我想使用spring boot来启动我的应用程序,但是在我在pom.xml中添加一些相关jar后,它会返回此错误:我感谢它可能是由一些冲突罐引起的?
Application.java
package com.mm.application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@ComponentScan("com.mm.controller")
@Configuration
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
//spring properties xml
ApplicationContext context = new ClassPathXmlApplicationContext(
"Spring-Module.xml");
SpringApplication.run(Application.class, args);
}
@Bean
public InternalResourceViewResolver setupViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
return resolver;
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
Error starting ApplicationContext. To display the auto-configuration report enabled debug logging (start with --debug)
Exception in thread …Run Code Online (Sandbox Code Playgroud)
我正在eclipse holies环境下研究android.但我的日食并没有帮助我在编写代码时找到关于类或方法的细节.
例如:Toast android.widget.Toast.makeText(上下文上下文,CharSequence文本,int duration)
如果我将鼠标悬停在上述语句中的makeText()上,则获取以下信息
注意:此元素没有附加源,并且在附加的Javadoc中找不到Javadoc
在哪里以及我需要附加什么?
当我在Eclipse中调试时,经常发生调试器崩溃,显示错误消息"Source not found"(在其下面是一个带有"Edit Source Lookup Path"文本的按钮).我之前在网上搜索过这个问题的解释/解决方案,但对我没有任何帮助.
但是,我现在已经弄清楚在我的情况下发生了什么:逐行逐步执行代码,然后逐步退出运行代码块时出现错误.我不知道术语,但我猜许多应用程序可能会在某些时候进入"待机模式",其中没有任何代码当前正在运行.一个示例是等待鼠标单击的图形应用程序.在MouseListener方法中停止断点,然后退出它(进入"待机模式")将导致我的错误.
我在这个问题的底部提供了一个MWE.当我在该行放置断点时发生错误
System.out.println("You clicked!");
Run Code Online (Sandbox Code Playgroud)
并使用F6逐步退出方法("Step Over").如果我在侦听器的最后一行按F8("Resume")而不是F6,调试器不会崩溃,一切都很好.
我的问题是:为什么Eclipse在这种情况下会做一些如此严重的崩溃?据我所知,源代码中没有一行可以说程序控件在下面的示例中离开监听器后可以说"步入",但为什么不进入"待机模式"而不抱怨?我可以以某种方式停用此错误,以防止我的调试会话经常遇到不合时宜的结束吗?或者我只需要记住按F8而不是F6,后者会导致崩溃?
package app;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
public class TestFrame extends JFrame {
public TestFrame() {
getContentPane().setPreferredSize(new Dimension(200, 200));
getContentPane().addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("You clicked!");
}
});
pack();
}
public static void main(String[] args) {
JFrame testFrame = new TestFrame();
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
testFrame.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud) 我创建了一个库包commons-lang3,这很好用.我可以构建bundle,添加一个依赖项,然后在我的插件中使用这个bundle中的所有类.
但我没有看到调试器中的源代码.
为此库包创建源包的最简单方法是什么?
PS:库包是一个包含原始JAR文件的插件; Eclipse不会再次编译源代码,只是将现有的JAR添加到类路径中.
我已经提交了一个错误:495662-源代码查找:在调试视图中看不到源代码。
我的问题听起来很熟悉,但由于该问题似乎已解决,所以不能这样。但是,我在来自依赖项的类中设置了一个断点(通过Maven)。下载了源代码,但是当程序到达该行时,我看到的只是
找不到来源。
我试图通过单击“ Edit Source Lookup Path ... ” 来添加查找路径,但是没有任何改变。我不知道我必须添加什么,以便调试器找到源。
看来这对于我所有的依赖项都停止了工作。
如何中断我的源代码查找以及如何解决它?
可能很重要:
我正在从一个Maven运行我的tomcat构建这些目标:
tomcat7:run-war -am -pl mz-web-server -Denv=dev
Run Code Online (Sandbox Code Playgroud)
但这到目前为止还不是问题。
此外,我的maven依赖项(例如gwt-user*.jar`spring * .jar或任何内容)都未在“源查找路径”中列出。只有“ Default ”路径也不包含该路径-难道这些jar不在此处列出?
下载Eclipse的火星2,完全删除我的项目,并重新导入它没有任何后.settings,.project或.classpath文件,我仍然看到了这个问题。我无法确定这是否真的是Eclipse错误,但目前我还不知道它还有什么可能。
我也尝试删除C:\Users\<username>\.eclipse并重新启动IDE,但结果没有变化。
这些是Maven依赖项下包含的库。如您所见,例如spring-security-core-*.jar已包含,并且源指向本地Maven存储库。单击编辑,我会看到完整路径C:/Users/Stefan/.m2/repository/org/springframework/security/spring-security-core/4.0.3.RELEASE/spring-security-core-4.0.3.RELEASE-sources.jar,是的,文件确实存在。
我的类路径变量:
eclipse ×6
debugging ×3
java ×3
android ×1
breakpoints ×1
bundle ×1
equinox ×1
javadoc ×1
maven ×1
osgi ×1
spring-boot ×1
spring-mvc ×1