从小程序重新启动java.exe

从小程序重新启动java.exe,java,dll,applet,jvm,twain,Java,Dll,Applet,Jvm,Twain,我有一个带有第三部分dll的小程序(来自JTwain)。我的小程序从TWAIN兼容的默认打印机扫描文档。小程序因卡纸而失败,无法恢复。用户离开页面,小程序被销毁。返回页面时,再次失败。关闭浏览器(这会终止电脑上的java.exe进程),然后返回该页面即可清除问题,一切正常 我想重新启动一切,而不需要用户关闭浏览器。我已经在加载小程序资源的URL中添加了一个GUID查询字符串,所以我知道没有缓存任何内容。我在windows任务管理器中进行了检查,没有dll创建的进程,它都发生在主java.exe进

我有一个带有第三部分dll的小程序(来自JTwain)。我的小程序从TWAIN兼容的默认打印机扫描文档。小程序因卡纸而失败,无法恢复。用户离开页面,小程序被销毁。返回页面时,再次失败。关闭浏览器(这会终止电脑上的java.exe进程),然后返回该页面即可清除问题,一切正常

我想重新启动一切,而不需要用户关闭浏览器。我已经在加载小程序资源的URL中添加了一个GUID查询字符串,所以我知道没有缓存任何内容。我在windows任务管理器中进行了检查,没有dll创建的进程,它都发生在主java.exe进程中。我尝试将扫描过程包装在一个线程中,这样我就可以在stop或destroy方法中中断它(以防小程序被销毁时小程序线程没有停止),但这不起作用

如有任何建议,将不胜感激。理想情况下,我希望在小程序卸载时用某种方式重新启动java(但我怀疑这是不可能的)

更新

我花了几天的时间试图找出小程序失败的原因。我还是不知道:(

发生卡纸时(不是我的代码),正在生成两个弹出窗口。第一个弹出窗口提醒用户堵塞,并可通过单击“确定”按钮关闭。第二个弹出窗口显示“从设备读取”并挂起。它不能通过上角的红色关闭窗口图标关闭-我从任务管理器中关闭它,windows要求发送关于“无响应程序”的报告。我作为假设这些弹出窗口是由dll生成的。考虑到第二个挂起,我的假设是由dll启动的线程挂起,同时保留了TWAIN应用程序某些组件上的锁。我得到

com.asprise.util.jtwain.JTwainException: Failed to open the specified data source:
    Source: TW-Brother MFC-9970CDW LAN Thrown
…当我尝试访问扫描仪时


对于如何获取更多信息,我有点不知所措。我正在windows虚拟pc上测试我的小程序(以便使用ie7),在这个环境中没有分步调试的方法。(而且它在我没有任何源代码的第三方代码上崩溃)

我在这里只看到两个实用的选项:

  • 使用一个处理卡纸问题的API。当然,这很容易说(获得健壮的API),但很难找到
  • 使用启动应用程序。自由浮动。如果应用程序冻结,用户可以将其杀死并单击新JVM中另一个实例的链接。或者,如果小程序能够检测到DLL的问题并且自身未冻结,则小程序也可以调用
    BasicService.showDocument(URLof.jnlp)

  • 当然,您还应该向..Asprise(?)开发人员报告此错误。最佳解决方案是在问题的根源处修复此问题。我们在这里所做的任何操作都是一种“解决方法”。

    “小程序因卡纸而失败,无法恢复。”为什么它不能恢复?集中精力解决这个问题似乎更有意义。这样做会对可用性造成很大伤害。谢谢Andrew。问题是我不知道它为什么不能恢复。我怀疑第三方dll正在崩溃,并保留了我需要的锁,但我还没有确认这一点(我添加了更多信息)。再次感谢Andrew。我会在Java Web Start上读一点书,看看我的目的是什么……请向我保证,您会根据更新报告问题。我曾多次尝试联系Asprise,并提供了一份简短的报告(包括堆栈跟踪的相关异常),但没有得到任何响应。也许他们正在处理此问题。