Can';t从JavaScript调用JNLP部署的小程序代码

Can';t从JavaScript调用JNLP部署的小程序代码,java,javascript,applet,jnlp,Java,Javascript,Applet,Jnlp,这是我关于Java的第一个问题,请耐心听我说 我根据以下代码构建了一个简单的小程序类HelloWorldApp.class: import java.applet.Applet; class HelloWorldApp extends Applet { static final long serialVersionUID = 6636669702238171717L; public String test() { return "Hello World!

这是我关于Java的第一个问题,请耐心听我说

我根据以下代码构建了一个简单的小程序类HelloWorldApp.class:

import java.applet.Applet;

class HelloWorldApp extends Applet
{
    static final long serialVersionUID = 6636669702238171717L;
    public String test()
    {
        return "Hello World!"; // Display the string.
    }
}
然后,我从这个类文件构建了一个jar文件。之后,我制作了一个愚蠢的简单JNLP文件:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="/Content/applets" href="/Content/applets/datadelivery.jnlp">
    <information>
        <title>Hello World</title>
        <vendor>Me</vendor>
    </information>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
        <jar href="HelloWorldApp.jar" main="true" />

    </resources>
    <applet-desc 
         name="Test Applet"
         main-class="HelloWorldApp"
         width="300"
         height="50">
     </applet-desc>
     <update check="background"/>
</jnlp>

问题出在哪里?没有函数调用;JS控制台回应说“uncaughttypeerror:Object”没有方法“test”。所以在这条线路的某个地方,部署没有成功。但是在哪里呢?基于示例,JNLP的东西看起来是正确的。

为了简化处理,我建议您使用“不推荐使用的”applet标记测试applet。我记得我在javascript小程序加载器上遇到了奇怪的问题,无法理解为什么它不能按预期的方式工作。

alert(deliveryApplet.test())
是访问页面中元素的一种非常简单的方法。我建议您编写一个JS
函数
,它接受ID字符串并返回相应的元素。在一系列浏览器中彻底测试它。在小程序中,调用(已测试且健壮的)JS函数。另外,确保小程序调用声明
scriptable=true
。将jnlp_ref更改为jnlp文件的相对路径(即无路径)。因为小程序中没有绘画,所以很难看到它是否启动。如果未能启动,则会收到红色的X和小程序未启动消息。在更改jnlp文件和重新运行之间清除java缓存。您正在加载deployJava.js脚本?@Petesh:是的,deployJava.js肯定正在加载。我将jnlp_href更改为“datadelivery.jnlp”,擦除Java缓存(Java控制面板->临时Internet文件->设置…,正确吗?),然后重试。同样的问题。但你是对的,我至少在发射。我花了一些时间从红色的X到我现在所在的灰色未上漆的盒子!嗯-我基本上构建了这个-它工作得很好,包括从Safari手动调用
alert(deliveryApplet.test())
。不过,我不得不对firefox使用
警报(document.applets[0].test())
@Petesh更新:抱歉,我花了一段时间才回复。总之,我注意到了两件事:1)我没有为IIS中的.jnlp文件设置MIME类型,这会给事情带来麻烦。固定的。2) 我花时间在我的应用程序中采用了github示例——paint()和all,瞧!我发现小程序根本没有加载。我觉得我在某个地方得到了一个错误的路径……如果HTML文件在~/administration中,applet/JNLP在~/Content/applets中,那么除了JNLP中的两个路径之外,还有什么变化?
<script type="text/javascript">
    var attributes = {
        id:'deliveryApplet',
        code: 'HelloWorldApp',
        // note: I tried including "codebase: '/Content/applets'", but nothing new happened
        width: 300,
        height: 50
    };
    var parameters = {
        jnlp_href: '/Content/applets/datadelivery.jnlp'
    };
    deployJava.runApplet(attributes, parameters, '1.6');
</script>
alert(deliveryApplet.test())