将Applet集成到Spring Web应用程序中

时间:2012-10-28 20:04:57

标签: java spring web applet

抱歉我的英语。

我遇到了问题,我找不到任何解决方案。我有一个spring web应用程序,我正在尝试将applet集成到jsp页面。

以下是我调用applet的代码。

    <object type="application/x-java-applet;version=1.6" width="200" height="200" title="Java"><param name="code" value="cl.facele.sign.applet.WebSignApplet.class">
    <param name="archive" value="/frontend-1.4/lib/fea-signer-0.94.jar, /frontend-1.4/lib/httpcore-4.0.1.jar, /frontend-1.4/lib/httpmime-4.0.jar, /frontend-1.4/lib/apache-mime4j-0.6.jar, /frontend-1.4/lib/commons-codec-1.3.jar, /frontend-1.4/lib/httpclient-4.0.jar, /frontend-1.4/lib/commons-logging-1.1.1.jar"><param name="XML_IDS" value="{xmlIds}">
    <param name="DOCS_IDS" value="{docsIds}"><param name="WS_URL_SERVER" value="http://localhost:8080/efactoryapp">
    <param name="WS_GET_DOC_METHOD" value="/services.htm?faction=getDocument&amp;id=">
    <param name="WS_POST_DOC_METHOD" value="/services.htm?        faction=addDocumentDeclarado">
    <param name="urlRefreshTarget" value="">Para utilizar la componente de firma electrónica debe instalar plugin <a href="http://java.sun.com/update/1.6.0/jinstall-6u22-windows-i586.cab">Java v.1.6</a>
    </object>

当加载jsp页面时,JVM控制台会显示此错误。

    java.lang.ClassFormatError: Incompatible magic value 218762506 in class file cl/facele/sign/applet/WebSignApplet
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
    Excepción: java.lang.ClassFormatError: Incompatible magic value 218762506 in class file cl/facele/sign/applet/WebSignApplet
    java.lang.ClassFormatError: Incompatible magic value 218762506 in class file         cl/facele/sign/applet/WebSignApplet
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
    Excepción: java.lang.ClassFormatError: Incompatible magic value 218762506 in class file cl/facele/sign/applet/WebSignApplet

感谢您的帮助!

更新:

如果有这个帮助,我用eclipse和tomcat实现我的应用程序和我的applet。

3 个答案:

答案 0 :(得分:1)

最可能的原因是您的Web应用程序实际上并没有像您认为的那样提供jar文件。尝试使用您的网络浏览器点击这些网址,或者使用curl或wget,然后查看您获得的内容。我猜测结果是一个html格式的错误信息,而不是jar文件。

有完整的解释here

另一种可能性较小的可能性是,applet是使用Java vm的更高版本编译的,而不是试图运行它的版本。

答案 1 :(得分:0)

&GT;这应该是缓存和编译问题

尝试从applet java控制台清理所有applet临时文件,重新编译并生成新的jar,这应该解决。我有同样的问题,我解决了使用重新编译,生成jar并使用jarsigner签名。

答案 2 :(得分:0)

如果将Java报告的魔术值(218762506)转换为二进制文件,则可以帮助您确定要返回的文件类型。在这种情况下:

0000 1101 = 13 - Carriage Return
0000 1010 = 10 - New Line
0000 1101 = 13 - Carriage Return
0000 1010 = 10 - New Line

可能是一个文本文件的开头,甚至可能是HTML,只有一些空行开始。

如果您能够通过将浏览器直接指向标签中指定的文件来成功下载jar,则可能会在幕后发生重定向,导致JVM瘫痪。如果可能的话,尝试使用绝对URL,至少要测试它。