通过Java Web Start(JNLP)启动的Applet启动两次

时间:2013-01-07 21:21:42

标签: java applet jnlp java-web-start

我正在通过JNLP和Java Web Start启动applet。我的问题是,当页面加载时,两个JVM将启动两个Java控制台弹出窗口和两个“你想运行这个应用程序吗?”弹出窗口。除此之外,applet最终加载,甚至我的本机库也正确加载。我不确定导致双重发射的原因。

编辑:此外,第一个加载的JVM在大约30-45秒后自动关闭。

HTML

<script>
var attributes = { code:"com.osgi.swpc.applet.TrackerApplet.class", width:770, height:825};
var parameters = {jnlp_href: "tracker-applet.jnlp"};
deployJava.runApplet(attributes, parameters, "1.6");
</script>

JNLP

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" href="">
    <information>
        <title>Tracker</title>
        <vendor>My Vendor</vendor>
    </information>
    <resources os="Windows">
        <!-- Application Resources -->
        <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" />
        <jar href="tracker_applet.jar" main="true" />
        <nativelib href="applets/jacob.jar"/>
        <nativelib href="applets/com4j.jar"/>
    </resources>
    <applet-desc 
         name="Tracker Applet"
         main-class="com.osgi.swpc.applet.TrackerApplet"
         width="770"
         height="825">
     </applet-desc>
     <update check="background"/>
</jnlp>

3 个答案:

答案 0 :(得分:0)

嗯...有趣的问题

我不太确定,因为有更多详细信息会很好......但在我第一眼看到我可以注意到你指出主类重复:

......在JS中

var attributes = { code:"com.osgi.swpc.applet.TrackerApplet.class", width:770, height:825};

然后在JNLP

main-class="com.osgi.swpc.applet.TrackerApplet"

所以请尝试只有一个main class attribute。最好留在JNLP并再次尝试发射;


如果您有其他问题详情,请

报告是否有帮助

答案 1 :(得分:0)

  

我不确定导致双重启动的原因。

这取决于您正在使用的Java的实现,但在最新版本的Oracle JRE(以前是Sun JRE)中,WebStart应用程序将:

  • 缓存JNLP文件
  • 阅读JNLP文件以查找需要下载的资源列表(这些通常是您的JAR)
  • 使用最近下载的JAR构建命令以启动普通Java应用程序
  • 启动Java应用程序

(注意我并不是要完整地描述Java WebStart的功能,但我只是尝试对该过程提供一些见解。)

这样,你首先拥有一个javaws可执行文件,只要下载JAR所需的时间就可以运行,后跟一个java可执行文件,它将执行实际程序。

答案 2 :(得分:0)

如果MSIE发生这种情况,只想添加一个建议来禁用“智能屏幕过滤​​器”,尤其是在没有/慢速互联网访问的情况下。

选项的位置取决于MSIE版本,我认为在MSIE 7中它直接在Extras菜单中,而在9中则在Internet选项的安全设置下。