【问题标题】:Execute .jar file through Mozilla Add-on通过 Mozilla Add-on 执行 .jar 文件
【发布时间】:2015-09-10 22:36:05
【问题描述】:

我一直在尝试找到一种使用 Mozilla JPM 执行 .jar 文件的方法(我很清楚存在一个完成此操作的附加组件,但我想学习)。我按照在线教程进行操作,这是我现在的代码

var buttons = require('sdk/ui/button/action');
var tabs = require("sdk/tabs");

var button = buttons.ActionButton({
  id: "mozilla-link",
  label: "Visit Mozilla",
  icon: {
    "16": "./icon-16.png",
    "32": "./icon-32.png",
    "64": "./icon-64.png"
  },
 onClick: handleClick
});

function handleClick(state) {
  tabs.open("C:\Users\QaziWa\Documents\Jar\DownloadReportPPE.jar");
}

现在我已经成功打开了 URL,但是我找不到任何关于如何执行 jar 文件的文档。我上面的代码:

tabs.open("C:\Users\QaziWa\Documents\Jar\DownloadReportPPE.jar");

显然是错误的。

我正在查看此链接:https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/tabs,但我找不到任何能够执行 jar 文件的内容。

我的目标是创建一个附加按钮,它将为我执行这个 jar 文件。此 jar 文件在网站上下载 pdf 报告,因此我希望它在新选项卡或窗口中执行。什么方法会给我我正在寻找的东西,或者是否有任何文档可以帮助我。

【问题讨论】:

  • 鉴于 jar 文件是 java 应用程序,而不是浏览器可以自行执行的东西:如果您不想将它们打包为 webstart 应用程序或 applet(两者在浏览器世界,java 已经失宠)你到底想做什么?我怀疑无论你的 .jar 应用程序做什么,现代 JS 可能也可以。
  • 我最近刚在一家公司开始了一个合作项目,并被要求找出一种在 Mozilla Firefox 浏览器中执行 .jar 文件的方法。 .jar 文件由这里的开发人员创建并交给我完成这项任务。本质上,此任务的目的是为客户提供一种在浏览器中单击即可执行 .jar 文件的方法。
  • 听起来你被要求重新发明java webstart
  • 如果我不正确,请原谅我,但Java Webstart 应用程序不会通过单击网页上的链接来执行吗?我想要做的是创建一个 Mozilla Firefox 扩展来执行一个 .jar 文件。
  • 是的 - 所以制作一个扩展程序,自动点击带有特定于您组织的 id/类组合的 webstart 链接并完成? (尽管请注意 Mozilla 很快就会改变其扩展框架的工作方式,详情 here

标签: javascript mozilla jpm


【解决方案1】:

很可能不是最好的解决方案,但我想出了一些可行的方法。

以下代码将通过单击 Mozilla 插件按钮执行 .jar 文件:

var buttons = require('sdk/ui/button/action');

var button = buttons.ActionButton({
  id: "execute-jar",
  label: "Download Report",
  icon: {
    "16": "./icon-16.png",
    "32": "./icon-32.png",
    "64": "./icon-64.png"
    //Icons for the button
  },
  onClick: handleClick
});



function handleClick(state) {   

    let {Cc, Ci} = require('chrome');
    var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
    file.initWithPath("C:\\Users\\QaziWa\\DownloadReportPPE.jar");

    if(file.exists()){
        file.reveal();
        file.launch();
    }
    else {
        console.log('Failed.');
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2018-04-12
    • 2016-02-19
    • 2016-08-23
    • 2018-08-07
    • 2011-11-14
    相关资源
    最近更新 更多