尝试在浏览器上打开applet时出现错误事件

时间:2014-01-20 21:44:15

标签: java applet java-web-start jnlp

我已经完成了一些Java程序,但这是我尝试作为applet运行的第一个程序,所以我可能会遇到一些基本错误。

我编译了所有类并将它们放在一个名为final的jar文件中。 我按照一些教程制作了一个JNLP文件,我称之为jnlp(是的,我知道,我非常原创:)并且我调用了我的jar文件并从HTML文件中调用了JNLP文件。

这些是java控制台输出的最后一行:(在它们之前,控制台充满了我的JNLP文件)

at sun.plugin2.applet.JNLP2Manager.loadJarFiles(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
preloader: Added pending event 2: ErrorEvent[url=null label=JNLP not an applet, nor a JavaFX application cause=JNLP not an applet, nor a JavaFX application

这是JNLP文件:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="jnlp.jnlp">
    <information>
        <title>Encryption Software</title>
        <vendor>Atlantis Atlantis</vendor>
        <icon href="encrypt_logo.jpg"/>
        <offline-allowed/>
    </information>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.6+" href=
           "http://java.sun.com/products/autodl/j2se"/>
        <jar href="final.jar"
            main="true" />

    </resources>
    <application-desc
         name="Encryption Software"
         main-class="EncryptApplication"
         width="500"
         height="300">
     </application-desc>
     <update check="background"/>
</jnlp>

以下是用于启动applet的JS:

<script src="https://www.java.com/js/deployJava.js"></script>
<script>
    var attributes = {code:'', width:500, height:500};
    var parameters = {jnlp_href: 'jnlp.jnlp'};
    deployJava.runApplet(attributes, parameters, '1.6');
</script>

1 个答案:

答案 0 :(得分:3)

EncryptionApplication真的是applet吗?要成为小程序,必须延长AppletJApplet

如果它不是applet,则无法嵌入HTML。

如果小程序,JNLP必须如此声明,所以:

    <application-desc
         name="Encryption Software"
         main-class="EncryptApplication"
         width="500"
         height="300">
     </application-desc>

应该是:

    <applet-desc
         name="Encryption Software"
         main-class="EncryptApplication"
         width="500"
         height="300">
     </applet-desc>

提示

  • 请务必使用JaNeLA检查JNLP。
  • 避免像你这样的applet可能会避免瘟疫。它们总是一个完整的PITA,并且随着最近的安全更新,只会变得更加如此。有关此事的看法,请参阅Why CS teachers should stop teaching Java applets
  • 可以使用Java Web Start从链接启动应用程序(例如基于JFrame的应用程序。)。它们将受到applet相同(非常严格)的安全性要求,但没有applet特定的问题(详见上一点中的链接)。
  • 正如@ElliottFrisch所提到的,最好包含code属性的有效值。有 的情况可以将其排除在外,但我现在不会进入那个......