1

所以我的朋友一直在向我为 Bukkit 编写的这个插件提出请求,就像我这个正派的人一样,我接受了他们。不幸的是,我不是一个伟大的程序员。我正在为这个插件制作一个帮助页面 - 插件附带的本地文件 - 我需要知道如何运行插件的 .jar 文件。我已经准备好了主要课程,我计划这样做的方式是在<head></head>标签中添加类似的内容。

<script> <!--
if(confirm("Would you like to run the plugin to set up first? (Click cancel if you do not)")) {
    //Something to run the plugin .jar file
}
//-->
</script>

这行得通吗?如果我需要进行任何修改,请告诉我。我想我可能只能调用函数,在这种情况下我只会调用main().
注意:这是按原样工作的,我只是让它制作另一个弹出窗口,而不是运行 .jar 文件。注意:网页和 jarfile 都已经下载到用户的计算机上,我只需要能够运行它。
注意:这个网页实际上是一个 HTML 文件,当他们下载插件时会下载到他们的计算机上,我希望它运行我的插件,因为它是一个自动设置功能。该网站未托管在服务器上。我觉得我真的需要澄清这一点。

查看代码并确定链接对于我的目的来说是最简单和最好的 - 感谢所有帮助!(顺便说一句,原来我会让 .jar 文件将帮助文档解压到文件夹中。哦,好吧:P)

4

3 回答 3

1

如果您只是将静态<applet><object>标签放入您的 html 页面的某个位置,它总是会加载您的 java 代码。

如果您希望稍后动态加载它,或者让用户选择是现在加载还是现在加载,您可以在 JavaScript 中使用以下构造:

var app = document.createElement('applet');
app.archive= 'Java.jar';  // Your java jar file here
app.code= 'Java.class';   // Your Main class that extends Applet
app.width = '400';        // The size of the area for displaying ...
app.height = '10';        //   ... the applet's graphical output
document.getElementsByTagName('body')[0].appendChild(app);

(改编自 Beachhouse 在此处的回答:如何使用 Javascript 动态嵌入 Java 小程序?;这使用<applet>标签,但可以轻松更改为使用<object>标签)。

重要的是您的 Java 代码实际上扩展了java.applet.Applet. 在这种情况下,仅仅拥有一个main()功能是不够的。然后,Applet该类具有您覆盖的方法(、、、init()和)destroy(),当您的小程序加载/卸载/显示/隐藏时,这些方法会自动调用。您还可以在实现的类上定义公共函数,然后您可以直接从 JavaScript 调用对象。您可能需要稍微尝试一下,因为 Java 和 JavaScript 使用的类型存在一些差异,因此您不能只返回或期望任何类型的参数,而是通过一些试验和错误(或阅读在网络上),它工作得很好。start()stop()Appletapp

您需要记住的一件事是加载小程序需要一段时间。事实上,如果浏览器阻止了小程序或者用户点击了权限问题上的否按钮,它可能永远不会被加载。因此,您可能无法app立即调用对象上的函数。相反,为自己编写一个小计时器,定期检查您的小程序是否已加载。我通常做的是public boolean isReady()在我的小程序类中定义一个函数,然后使用以下 Javascript:

if (typeof app.isReady=='undefined') return false;
return app.isReady();

但是,当然,如果您只使用init()andstart()方法而不从 Javascript 调用小程序,则不必担心这一点。

于 2012-12-04T15:40:38.157 回答
1

您可以研究的另一件事是 Java Web Start 框架: http ://en.wikipedia.org/wiki/Java_Web_Start

这允许用户直接从他们的浏览器启动任意 jar 文件,并可选择将其安装在他们的机器上。因此,如果您正在寻找一种通过网站部署 Java 程序的方法,那么这可能是最好的解决方案。

在这种情况下,Java 代码不会像 applet 那样在浏览器“内部”运行(嗯,在 JVM 内部,但与浏览器绑定),而是作为标准的独立进程运行,就像您启动了jar 文件从您的计算机的硬盘。

于 2012-12-04T15:53:04.200 回答
0

我想你可能在这里寻找<applet>标签。

<APPLET code="MyJAVAFile.jar"></APPLET>

对于 HTML5,您应该使用<object>标签,如下所示:

<object type="application/x-java-applet" code="MyJAVAFile.jar"></object>

您可能还会发现这篇文章很有趣。值得一读。

于 2012-12-04T15:09:38.847 回答