我已经实现了JavaFX应用程序,用于使用ImageView和MediaPlayer显示jpg和mp4文件。
在我的私人Windows 10 PC上,一切正常。 但是在我公司的Windows 10 PC上,当我尝试播放mp4文件时,Java虚拟机完全崩溃了(而jpg也可以在这里正常工作)。 “崩溃”表示没有引发异常,但会出现一个弹出窗口:
重要的代码行:
Path fileOnDisk = new Path(...);
Media media = new Media(fileOnDisk.toFile().toURI.toString())
MediaPlayer mediaPlayer = new MediaPlayer(media);
...
在最后一行中发生崩溃。
在尝试查找崩溃的确切位置时,我使用了IntelliJ的调试器进入MediaPlayer.java
。这里是类MediaPlayerShutdownHook
。在执行void addMediaPlayer()
if (jfxPlayer != null)
之后,崩溃发生在MediaPlayerShutdownHook.addMediaPlayer(this);
内部
我尝试使用JDK8(服务器颠覆),JDK9,采用OpenJDK8,采用开放JDK 11(采用OpenJFX):效果保持不变。
进一步的调查试图寻找Windows版本之间的差异,这使我进入了Windows事件查看器,该事件记录了崩溃。它说javaw.exe在模块0xc000409
PayloadRestrictions.dll
。
这是完整的消息(很抱歉,我是德国人)
Name der fehlerhaften Anwendung: javaw.exe, Version: 8.0.2110.12, Zeitstempel: 0x5ca2e23b
Name des fehlerhaften Moduls: PayloadRestrictions.dll, Version: 10.0.16299.461, Zeitstempel: 0xc43cac91
Ausnahmecode: 0xc0000409
Fehleroffset: 0x000000000003a570
ID des fehlerhaften Prozesses: 0x1d50
Startzeit der fehlerhaften Anwendung: 0x01d54496ba4afa4b
Pfad der fehlerhaften Anwendung: C:\Program Files\Java\jre1.8.0_211\bin\javaw.exe
Pfad des fehlerhaften Moduls: C:\WINDOWS\SYSTEM32\PayloadRestrictions.dll
Berichtskennung: 9b2608fa-6792-4b17-9d0e-01411fb6ffb3
我在Internet上的调查使我遇到了Windows安全中的ExportAdressFiltering(EAF)引起的类似问题。
Link to the article where firefox.exe causes a similar problem
这可能是我搜索的Windows安装之间的“差异”:我的私人计算机使用标准设置,而公司的PC设置由IT部门控制。
jpg文件和mp4文件位于同一(本地)位置,因此应该没有访问限制的原因。但是也许ImageView对文件使用的访问方法与MediaPlayer不同?!?
我可以以其他方式使用MediaPlayer,以使EAF不再是障碍吗?
感谢您的帮助
Ingo