从Java内部调用VLC时死亡

时间:2011-01-27 20:11:50

标签: java windows vlc

我遇到了一个问题,此时此刻,我甚至不知道如何正确调查。有关如何获取更多信息的任何建议都值得欢迎和赞赏。

我公司销售的产品以WinXP PC为核心。该产品的任务之一是能够按需启动视频播放器 - 在这种情况下是VLC。 (具体来说,VLC为0.8.6d;它已经过时了几年,但由于一些原因,升级是有问题的。)负责启动播放器并执行许多其他任务的应用程序是用Java编写的。

我的桌子旁边有一个试验台。过去工作得很好。但由于某种原因,当Java应用程序尝试启动VLC时,它现在会发出“发送错误报告”窗口:“VLC媒体播放器遇到了问题,需要关闭....”你知道那个。

显然,我已经做了一件令人烦恼的事情。问题是,我既不知道它可能是什么,也不知道如何修复它。

我知道的东西:

  • 这不是代码错误。我在我的开发台式机上运行相同的软件,它没有这个问题。
  • 这不是VLC安装,也不是格式错误的视频文件。当我从Java捕获用于启动它的命令并从“cmd”窗口手动输入该命令时,它可以正常工作。
  • 如果你在进行系统调用时没有手动消耗STDERR和STDOUT,那就不是那个偷偷摸摸的bastich bug。我已经覆盖了。
  • 我失败时没有收到任何错误消息或输出;它只是失败并给了我那个弹出窗口。

我很难过。对于它可能是什么或如何弄清楚它是什么的建议是非常受欢迎的。

3 个答案:

答案 0 :(得分:1)

好吧,我不熟悉java和VLC,但我会做以下事情:

  1. 检查两个桌面中是否有相同的Java虚拟机。以防万一...
  2. 检查进程的环境变量。它们取决于父进程。也许VLC会使用其中一些。
  3. 尝试使用WinDbg等本机调试器调试崩溃。也许调用堆栈会给你更多的想法。
  4. 祝你好运!

答案 1 :(得分:0)

我的建议:

  1. 创建一个只启动VLC的简单Java应用
  2. 使用您的应用启动简单的命令行窗口程序
  3. 使用您的应用启动复杂程序
  4. 检查是否存在内存约束问题。 VLC的内存是否太少而无法运行?
  5. 这听起来像是一个记忆/环境问题。

答案 2 :(得分:0)

我会尝试一些事情

  1. 确保测试和开发机器在各方面都是相同的,操作系统(如果可能从相同的OS磁盘安装),相同的JVM版本,相同的内存分配到JVM(你知道那些-X-ms的东西)。我担心的不是Java / JVM本身,而是Windows。
  2. 确保您可以从Java应用程序中获取午餐,例如Windows Phone Player或MS Word。
  3. 尝试并启动其他版本的VLC以查看它是否是VLC版本问题。
  4. 最后尝试擦拭测试盒并重新安装(使用Windows,你永远不能说,全新的安装可能就是这样!)