VLCJ Java Applet无法加载

3
我正在试图将一个vlcj应用程序编译为Java小程序。我已经拥有了在/lib中运行vlcj所需的3个jar文件,以及/src中的类文件。在eclipse中,小程序在小程序视图器中正常工作。但是当我打包Jar文件并加载我的测试html页面时,什么也不会发生!我知道小程序需要签名,因为Java小程序的沙盒机制。我已经签名了小程序,但我肯定做错了什么。
以下是我做的步骤:
1)首先,要创建小程序,我将.java文件编译为.class文件,并将.class文件存储在/bin中。 javac -cp lib/vlcj-2.1.0.jar:lib/platform-3.4.0.jar:lib/jna-3.4.0.jar Test.java 2)然后,我使用以下命令创建我的Jar文件 jar cvf Test.jar lib/* Test.class 3)接下来,我使用“keytool”生成密钥。
4)然后,我使用“jarsigner”签名Test.jar文件,生成SignedTest.jar。
5)我然后导出公钥到证书。
6)然后将该证书作为受信任的证书导入。
我的测试html页面使用以下代码打开Java小程序: <applet code="bin/Test.class" archive="SignedTest.jar” width=200 height=200> 这些步骤中是否有任何错误?我错过了一两个阶段吗?还有一个额外的问题,有没有人知道如何在Linux中获取控制台输出?
---编辑---
这是签名Jar文件的结构。
   703 Wed Aug 22 09:25:16 BST 2012 META-INF/MANIFEST.MF
   908 Wed Aug 22 09:25:16 BST 2012 META-INF/SIGNFILE.SF
   782 Wed Aug 22 09:25:16 BST 2012 META-INF/SIGNFILE.DSA
   500 Wed Aug 22 09:06:28 BST 2012 Test$1.class
  1448 Wed Aug 22 09:06:28 BST 2012 Test.class
    40 Tue Aug 14 11:36:48 BST 2012 Notes
1008730 Tue Jul 10 13:15:48 BST 2012 lib/jna-3.4.0.jar
913436 Tue Jul 10 13:15:48 BST 2012 lib/platform-3.4.0.jar
278211 Tue Jul 10 13:15:48 BST 2012 lib/vlcj-2.1.0.jar
   371 Tue Jul 10 13:23:54 BST 2012 .project
   351 Tue Jul 10 13:16:18 BST 2012 .classpath

@AndrewThompson 1) 不,Class并不在名为bin的包中。我没有意识到那是包名。之后我删除了bin,所以code="Test",但仍然没有运气。2)是的,依赖于vlc的小程序部署是脆弱的。我还没听说过Xuggle,我会去看看的。我需要支持访问多播MPEG流的东西。我会看看这个是否支持。3)是的,签名代码的接受对话框出现了,我确实点击了“是”。4)我目前在Ubuntu上运行这个,并且尚未出现用于小程序的Java控制台。 - nate-sonicbottle
@AndrewThompson 经过大量的搜索,我现在有了一个Java控制台。但是我很困惑。控制台显示: basic: exception: java.lang.NoClassDefFoundError: uk/co/caprica/vlcj/component/EmbeddedMediaPlayerComponent.这是存储在外部jar文件中的一个类。你所说的那些Jars需要在运行时类路径中,是指HTML代码还是我需要更改.classpath文件?感谢您的帮助。 - nate-sonicbottle
2个回答

1
java.lang.NoClassDefFoundError: uk/co/caprica/vlcj/component/EmbeddedMediaPlayerComponent.

需要将包含uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent的Jar文件添加到小程序的运行时类路径中。这可以通过applet元素的archive属性来实现。它应该是一个逗号分隔的Jars列表,这些Jars是小程序所需的。根据编译细节并假设它们都在与HTML相同的目录中,可能会导致此小程序元素。

<applet 
    code="Test" 
    archive="SignedTest.jar,vlcj-2.1.0.jar,platform-3.4.0.jar,jna-3.4.0.jar" 
    width=200 
    height=200>
</applet>

它起作用了,但这次出现了不同的错误。但是随着我的小程序加载,我认为可以安全地说原始问题已经解决了。感谢您的帮助。 - nate-sonicbottle
"它起作用了..." 很高兴你解决了它。"这次我遇到了一个不同的错误"。如果您无法解决错误,请随时发布另一个问题。 - Andrew Thompson

1

可能Test.class从未被添加到.jar文件中?因为Eclipse将.class文件放入/bin/Test.class,而您正在尝试添加/Test.class

要检查,请尝试

    jar tvf Test.jar

完成第二步后。

尝试使用Eclipse创建Jar文件。 文件 | 导出 | Java | Jar文件。


我之前不知道jar tvf,谢谢你让我知道了。对Java还有点陌生。我试了一下,Test.class在那里。我也没想到可以用Eclipse创建jar文件。这次我用Eclipse创建了jar文件。jar文件中包含了Test.class和我需要的3个jar文件。我从我的HTML代码中删除了bin并尝试了一下,但没有成功。 - nate-sonicbottle
嵌套的.jar文件可能没有任何用处。这就是为什么(在您的解决方案中)您必须在applet标记的archive=属性中指定.jar文件。JAR文件必须在类路径上才能被Java Classloader找到。 - user980717

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接