当前位置: 首页 > 面试题库 >

调试JNLP启动的应用程序

越霖
2023-03-14
问题内容

我创建了一个Java桌面应用程序(使用Swing),现在尝试通过使用JNLP从网络启动它使其工作。当我从终端启动应用程序时,它运行良好,但是一旦从JNLP启动它,它就不会关闭。我必须每次都手动终止该进程。

我读到如果JFrame将其DISPOSE_ON_CLOSE用作默认关闭操作可能会出现问题,但事实并非如此。它使用DO_NOTHING_ON_CLOSE(隐式)。另外,System.exit(0)释放所有对象后,我将显式调用:

f = new JFrame("Pacman");
f.addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
        // Terminate the Game-loop:
        GameLoop.INSTANCE.stopLoop();
        // Close the application:
        System.exit(0);
    }
});

我猜想在关闭应用程序时可能会引发异常,但是我找不到从JNLP开始获取正在运行的应用程序的控制台输出(例如Stack-Trace)的方法。这是我尝试过的:

  • javaws调试参数开始并进行连接jconsole(可以,但是我找不到任何异常或控制台输出)。
  • javaws调试参数开始,并将IntelliJ调试器附加到它(也可以,但是没有任何输出)

因此,如何像使用普通的桌面应用程序那样使用JNLP启动应用程序并获取输出(写入默认的输出流和错误流)?


问题答案:

解决方案1-启用Java控制台,并查找异常。

您可以通过 Java控制面板进行操作 。切换到“ 高级” 选项卡,并确保在 Java 控制台 中选择了“ 显示”控制台

然后,运行您的应用程序并监视控制台中的异常。修复异常。

解决方案2-正确调试正在运行的应用程序。

像这样启动Web Start应用程序(对于Java 1.6及更高版本):

javaws -verbose -J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=8123 http://myserver.com/path/to/myapp.jnlp

如果使用早期的Java版本(1.4.2、1.5),请设置环境变量,如下所示:

set JAVAWS_VM_ARGS="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=8123"

并通过以下方式运行该应用程序:

javaws http://myserver.com/path/to/myapp.jnlp

应用运行时:

  1. 附加一个调试器(Eclipse会执行-使用 Run => Debug Configurations => Remote Java Application ,然后在 Connection Properties 面板中输入传递给参数的端口javaws(在本例中为8123)。
  2. 在您的windowClosing方法内设置一个断点。
  3. 尝试关闭您的应用程序-Eclipse应该在您的断点处中断执行
  4. 进入GameLoop.INSTANCE.stopLoop()方法以查看其挂起位置/时间。

不要期望在控制台中看到解决方案,只需通过调试器逐步执行代码即可-如果应用程序挂起,它将向您显示位置。



 类似资料:
  • 问题内容: 我正在调试jnlp应用程序,过去可以通过Eclipse对其进行远程调试,但现在不再可用。 启动它的命令是: 问题是当我连接Eclipse调试器时,它会关闭并重新启动;因此,调试器将附加到第一个进程;当这种情况消失时,调试器也是如此。 调试器脚本实际上并不重要;因为如果suspend = n,则在调试器启动之前,jnlp进程会自行重新启动。 我尝试跟踪它,但是选项-XX:TraceSup

  • 问题内容: 我知道如何使用Eclipse调试远程Java VM,但是如何使用Java Web Start程序进行调试。我有一个仅在Java Web Start中出现的问题。它必须与安全性相关。 我需要一个可以与当前Java VM(如1.6.0_12)一起使用的解决方案。 问题答案: 与要远程调试的任何其他Java进程完全相同:您必须为VM()设置一些参数,然后连接到给定的端口。在Java Webs

  • 我正在使用Intellij IDEA 14.1,并试图调试最基本的独立Spring Boot 1.2.5应用程序。有人能告诉我怎么做吗? 我读过http://docs.spring.io/autorepo/docs/spring-boot/1.2.5.RELEASE/maven-plugin/usage.html但并没有成功地使其发挥作用。最简单的方法是禁用Spring Boot在调试时使用的分叉

  • 问题内容: 直到最近,我还能够使用 Java web start 在 Firefox中 启动/打开 JNLP 文件。 不知道发生了什么事,突然突然启动了 JNLP 文件,出现了启动屏幕,显示 Java正在启动… ,然后什么也没有发生。甚至浏览器和 javacpl.cpl 小程序中的 Java控制台 也不会打开。 __ 尝试了所有可能性:删除了所有较旧的版本并安装了最新的JRE(Java版本“ 1.

  • 我正在尝试直接在STS中调试我的Spring启动应用程序,右键单击项目并调试为Spring启动应用程序。我可以看到我的控制器类中的断点正在被击中,但它没有击中我的服务类中的断点,线程只是运行,有什么想法吗?

  • 使用spring-boot时,一切工作都很好。尽管如此,在spring-boot中已删除了注释和。我试图将代码重构为新版本,但我做不到。对于以下测试,我的应用程序在测试之前没有启动,http://localhost:8080返回404: 如何重构测试以使其在Spring-Boot1.5中工作?