问题描述
我是chrome扩展本机消息传递的新手。我在以下位置阅读了该文档: https://developer.chrome.com/extensions/nativeMessaging
我要分享的示例仅取自{https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/docs/examples/api/nativeMessaging)
,除了代替python host之外,我有一个简单的java程序。在运行扩展程序并单击“连接”时,出现错误:
连接失败:与本机消息传递主机通信时出错。
我的猜测是这是2个错误的组合:
连接失败
通信时出错
作为一个实验,我没有从Java主机发送任何消息,希望它不会在“通信错误时抛出错误”,但是仍然得到相同的错误消息。下面是代码:
Chrome文件:
manifest.json:
{
// Extension ID: knldjmfmopnpolahpmmgbagdohdnhkik
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcBHwzDvyBQ6bDppkIs9MP4ksKqCMyXQ/A52JivHZKh4YO/9vJsT3oaYhSpDCE9RPocOEQvwsHsFReW2nUEc6OLLyoCFFxIb7KkLGsmfakkut/fFdNJYh0xOTbSN8YvLWcqph09XAY2Y/f0AL7vfO1cuCqtkMt8hFrBGWxDdf9CQIDAQAB","name": "Native Messaging Example","version": "1.0","manifest_version": 2,"description": "Send a message to a native application.","browser_action": {
"default_title": "Test Extension",//"default_icon": {
// "19": "img/icon19.png",// "38": "img/icon38.png"
//},"default_popup": "main.html"
},"type": "stdio","icons": {
"128": "icon-128.png"
},"permissions": [
"nativeMessaging"
]
}
完整的扩展代码可以在以下位置找到: https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/docs/examples/api/nativeMessaging/app/main.js
本地文件:
com.google.chrome.example.echo-win.json:
{
"name": "com.google.chrome.example.echo","description": "Chrome Native Messaging API Example Host","path": "native-messaging-example-host.bat","allowed_origins": [
"chrome-extension://knldjmfmopnpolahpmmgbagdohdnhkik/"
]
}
install_host.bat
REG ADD "HKCU\Software\Google\Chrome\NativeMessagingHosts\com.google.chrome.example.echo" /ve /t REG_SZ /d "%~dp0com.google.chrome.example.echo-win.json" /f
native-messaging-example-host.bat:
cd C:\Users\jagrati.agrawal\Desktop\serviceNow\src-master-chrome-common-extensions-docs-examples-api-nativeMessaging\host && java HelloWorld
HelloWorld.java
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
public class HelloWorld {
public static void main(String args[]) throws Exception{
String message = "{\"m\":\"hi\"}";
System.out.println(ByteBuffer.allocate(4).order(ByteOrder.nativeOrder()).putInt(message.length()).array());
System.out.write(message.getBytes("UTF-8"));
System.out.flush();
}
}
请帮助。另外,如果我理解正确,当我更改HelloWorld.java并将其编译为HelloWorld时,不需要重新安装扩展程序。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)