所以我的朋友一直在提出关于这个插件的请求我正在为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文件。注意:网页和jar文件都已下载到用户的计算机上,我只需要能够运行它。
注意:这个网页实际上是一个HTML文件,下载插件后会下载到他们的计算机上,我希望它能够运行我的插件,因为它是一个自动设置功能。该网站不托管在服务器上。我觉得我真的需要澄清一下。
查看代码并确定链接最简单,最适合我的目的 - 感谢所有帮助! (顺便说一句,原来我会将.jar文件解压缩到文件夹中。好吧:P)
答案 0 :(得分: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的答案:How can I embed a Java applet dynamically with Javascript?;它使用<applet>
标记,但可以轻松更改为使用<object>
标记代替。)
您的Java代码实际扩展java.applet.Applet
非常重要。在这种情况下,仅仅具有main()
功能是不够的。然后,Applet
类会覆盖您覆盖的方法(init()
,destroy()
,start()
和stop()
),这些方法会在您的applet加载/卸载时自动调用/显示/隐藏。您还可以在实现Applet
的类上定义公共函数,然后可以直接从JavaScript调用app
对象。你可能不得不玩这个,因为Java和JavaScript使用的类型有一些不同,所以你不能只返回或期望任何类型的参数,但有一点试验和错误(或阅读在网上),它运作良好。
您需要记住的一件事是加载applet需要一段时间。事实上,如果浏览器阻止applet或用户单击权限问题上的无按钮,它可能永远不会被加载。所以你可能无法立即调用app
对象上的函数。相反,给自己写一个小计时器,定期检查你的applet是否已加载。我通常做的是在我的applet类中定义一个public boolean isReady()
函数,然后使用以下Javascript:
if (typeof app.isReady=='undefined') return false;
return app.isReady();
但是,当然,如果您只使用init()
和start()
方法而不从Javascript调用applet,则不必担心这一点。
答案 1 :(得分:1)
您可以研究的另一件事是Java Web Start框架: http://en.wikipedia.org/wiki/Java_Web_Start
这允许用户直接从他们的浏览器启动任意jar文件,并可选择将其安装在他们的计算机上。因此,如果您正在寻找的是通过网站部署Java程序的方法,那么这可能是最佳解决方案。
在这种情况下,Java代码不会在浏览器“内部”运行(好吧,在JVM内部,但与浏览器绑定),就像applet一样,但它会作为一个标准的独立进程运行,就好像你从计算机的硬盘启动了jar文件。
答案 2 :(得分:0)
我认为你可能在这里寻找<applet>
标签。
<APPLET code="MyJAVAFile.jar"></APPLET>
对于HTML5,您应该使用<object>
标记,如下所示:
<object type="application/x-java-applet" code="MyJAVAFile.jar"></object>
您可能还会发现this article很有趣。值得阅读。