我正在开发一个 google-chrome 应用程序,我需要启动一个 Java 应用程序。(真的,我需要在没有选择文件弹出窗口的情况下读取和保存文件)。
由于 NPAPI 库已被弃用,我一直在寻找替代方案,并决定使用“本机消息传递主机”来启动外部应用程序。
为了创建我的第一个示例,我尝试启动一个 shell 脚本,因为我认为这更容易。但是我还没有设法启动脚本。我在linux下开发
清单文件在此路径中
“/etc/opt/chrome/native-messaing-hosts/com.centeropenmiddleware.l3p1.xmleditor.json”:
并且包含是:
{
"name": "com.centeropenmiddleware.l3p1.xmleditor",
"description": "Saving a file",
"path": "/home/paco2/pp.sh",
"type": "stdio",
"allowed_origins": [
"chrome-extension://plfnjepfbddljeogeacemcpceiofapnm/"
]
}
应用程序 id 是 plfnjepfbddljeogeacemcpceiofapnm
该脚本创建一个文件:
#!/bin/bash
echo hola mundo >> aaa
应用程序代码在这一行失败:
try {
var port = chrome.runtime.connectNative ('com.centeropenmiddleware.l3p1.xmleditor')
} catch (e) {
console.log(e);
return;
}
捕获的错误是
{
message : "Error connecting to native app: com.centeropenmiddleware.l3p1.xmleditor",
stack : "Error: Error connecting to native app: com.centeropenmiddleware.l3p1.xmleditor
at Object.<anonymous> (extensions::runtime:189:11)
at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)
at Object.handleRequest (extensions::binding:55:27)
at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)
at Object.<anonymous> (extensions::binding:318:32)
at saveas (chrome-extension://plfnjepfbddljeogeacemcpceiofapnm/js/editorRoutines.js:104:35)
at HTMLButtonElement.sendFileContentFromEditor (chrome-extension://plfnjepfbddljeogeacemcpceiofapnm/js/editorRoutines.js:89:27)"
}
要启动应用程序,我使用了这些命令
google-chrome --load-and-launch-app=/home/paco2/Projects/UPM/XMLEditor/XMLEditor/ --native-messaging-hosts="com.centeropenmiddleware.l3p1.xmleditor.json=/etc/opt/chrome/native-messaing-hosts/com.centeropenmiddleware.l3p1.xmleditor.json"
google-chrome --load-and-launch-app=/home/paco2/Projects/UPM/XMLEditor/XMLEditor/
我使用稳定的谷歌浏览器版本(34.0.1847.132)
有什么不对吗?