为什么我的JWS应用程序不响应Swing按钮操作?
我有一个我在eclipse中创建的程序。它收集有关连接到本地网络的设备的信息,并将其显示在JTable
中。在环境中它执行得很好
before和after the start button is clicked
当尝试通过Java Web Start(JWS)启动它时,我按下Swing Gui上的按钮,它们不执行我创建的操作方法。它没有做任何事情。这是before和after
jar / jnlp文件是最新的,并在本地启动。什么可能导致这个?我该如何调试这样的东西?
答案 0 :(得分:2)
当尝试通过Java Web Start(JWS)启动它时,我按下按钮 在Swing Gui上他们没有执行我创建的动作方法。 它没有做任何事情。
如StackOverflow中的java-web-start标记所述
默认情况下,类似applet的安全沙箱应用于代码 使用JWS启动
虽然,在您的代码中,您已经收集有关连接到本地网络的设备的信息。但是,由于您的代码在类似applet的安全沙箱中运行,因此它不允许它访问本地网络,当您通过eclipse将其作为桌面应用程序运行时,通常是允许的。因此,当单击Start Test
按钮时,您的应用程序可能会抛出某种SecurityException
,这是您无法预料的,因此会在后台使用。
<强>更新强>
为了放宽这个沙箱,代码需要通过数字签名 提供商,并受最终用户信任
这意味着要使您的代码执行那些无法执行的任务,您需要拥有jnlp / jar文件,该文件由您下载它的提供程序进行数字签名,而且您必须能够验证该文件仅从该站点接收并且未被修改。这是为了确保接收方不会运行某些可能损害其本地系统的恶意代码。请参阅Lesson: API and Tools Use for Secure Code and File Exchanges上的oracle教程。它说:
如果您以电子方式向某人发送重要文件(或 文件),或运行的applet或应用程序,收件人需要a 验证文档或代码来自您的方式,而不是 在传输中修改(例如,恶意用户拦截它)
有关该教程的更多信息。通过它。