我可以在 NetBeans 中调试 Java 应用程序,并且已经在 NetBeans 中调试了其他项目。但是,当在 Glassfish 中部署单例并在 @PostConstruct 注释上设置断点时,我无法调试。我已设置要调试的目标服务器,并设置了调试器应从中进行调试的断点,并以 Debug模式启动服务器。但是,我仍然无法在 NetBeans 中进行调试。下面是代码:
@Startup
@Singleton
public class Listener {
@PostConstruct
public void init() {
System.out.println("init");
}
}
我在 System.out.println("init") 语句上设置了断点。我遵循的步骤是:
1) 构建Jar文件 2)启动Glassfish服务器 3)部署Jar文件 4)以 Debug模式启动服务器 5) NetBeans 的控制台中打印了“init”,但我无法调试。
我尝试在许多不同的端口上附加调试器,但要么连接被拒绝,要么无法调试。
我使用的是 NetBeans 1.7.2。我已经对其他版本的 NetBeans 进行了相同的尝试,但仍然存在同样的问题。
上面只是示例代码,还有更多代码但我无法调试。我在 Google 上找不到任何解决方案。
你能尝试一下吗?
最佳答案
你必须:
- 以 Debug模式启动服务器(启动时打印 dt_socket 端口)
- 附加调试器调试 -> 附加调试器...
- 设置断点
- 部署您的应用
@PostConstruct 在部署期间被调用,因此您提供的步骤顺序不正确,因为代码是在附加到调试器之前调用的。
关于Java 调试部署的 Glassfish @PostConstruct 无法调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23649051/