1

我正在尝试编译和运行JFlashPlayer 2.1.1试用版附带的示例代码。(抱歉下载链接,看来VersaEdge已经停止了 JFlashPlayer

我能够在 2009 年获得运行演示,但java.lang.UnsatisfiedLinkError由于com.jpackages.jflashplayer.FlashPanel.getOSVersion. 我正在运行 Windows 7 64 位,并且我使用 Internet Explorer。我猜 VersaEdge 没有更新 JFlashPlayer 以支持 Windows 7,或者 IE 中的某些组件丢失了。

此外,我是一位经验丰富的 C# 开发人员,但在编译 Java 时,我是一个彻头彻尾的喋喋不休的白痴。也许我错过了类路径或其他明显的命令行开关。

我已经使用它们的批处理文件编译了这些类buildClasses.bat,即:

javac -d classes -classpath ..\jflashplayer.jar Example.java

然后我使用

java -cp classes;..\jflashplayer.jar Example

. 异常的全文:

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.jpackages.jflashplayer.FlashPanel.getOSVersion(I)I
    at com.jpackages.jflashplayer.FlashPanel.getOSVersion(Native Method)
    at com.jpackages.jflashplayer.FlashPanel.n(Unknown Source)
    at com.jpackages.jflashplayer.FlashPanel.installFlash(Unknown Source)
    at Example.createFlashPanel(Example.java:94)
    at Example.<init>(Example.java:141)
    at Example.main(Example.java:425)

任何帮助表示赞赏!感谢 Java 大师!

编辑

runExample.bat试用文件夹的根目录中有几个 DLL 和一个。批处理文件运行

java -classpath jflashplayer.jar;example/classes Example

并给我同样的UnsatisfiedLinkError。我尝试在路径中包含当前目录以协助 JNI 搜索,但这并没有改变任何东西。我不确定它在寻找什么 DLL。

编辑 2

从 2006 年找到一篇很棒的(但很古老的)文章,描述了让示例运行的所有复杂性。没运气。上一次 JFlashPlayer 发布是在 2009 年的某个时候readme.txt,而Windows7 是在 2009 年 10 月 22 日发布的。所以我相当肯定这是一个不受平台支持的问题。

那么,接下来的问题是,如何在 Java 中托管 SWF?但我会将其留作后续问题。

4

1 回答 1

1

在寻找替代解决方案数小时后,我遇到了QT-Jambi,它有一个应该支持 Flash的 WebKit 组件。它也是积极开发和真正跨平台的,而 JFlashPlayer 既死了又绑定到 Windows/IE/ActiveX 插件。

奇怪的是,在安装 QTJambi 之后,我遇到了与 JFlashPlayer 相同的问题,并发现我最初的错误是尝试在 64 位 JRE 中运行 32 位应用程序。所以,确保我安装了 32 位 JRE,我将它的位置添加到我的路径的前面

> set path=c:\Program Files (x86)\Java\jre7\bin;%path%

> where java
c:\Program Files (x86)\Java\jre7\bin\java.exe
C:\Windows\System32\java.exe
C:\Program Files\Java\jdk1.6.0_31\bin\java.exe

并从命令行执行批处理文件,示例运行良好。

最终,像 QTJambi(或QtWebKit)这样的 WebKit 解决方案对我来说更好,我感谢我缺乏对 java 的了解,因为我用这种迂回的方式来寻找更绿色的牧场。

其他不太方便的解决方案是用于 SWT 的 WebKit(仅限 Windows)和JWebPanevaporware)。

于 2013-04-16T03:01:45.247 回答