【问题标题】:Chrome App fails to communicate with native host on windowsChrome 应用无法与 Windows 上的本机主机通信
【发布时间】:2014-05-31 02:50:05
【问题描述】:

我用 Java 编写了一个 chrome 应用程序和一个本机消息传递主机。该组合在 linux 上运行良好。但是,当我尝试将组合移植到 Windows 时,无法建立通信。包含主机的 jar 与 linux 变体完全相同。我正在使用以下脚本 (start.bat) 来启动 Java 主机:

@echo off
java -jar "%~dp0theHost.jar"

json清单如下:

{
   "name": "com.service.host",
   "description": "Native messaging host",
   "path": "start.bat",
   "type": "stdio",
   "allowed_origins": [
      "chrome-extension://--the ID--/" 
   ]
}

我已将 HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.service.host 配置为路径 e:\hosts\com.service.host.json service.bat 文件连同 jar (theHost.jar) 也在 e:\hosts\ 目录中。 尝试开始通信时出现错误:与本机消息传递主机通信时出错。 我还尝试将清单中的路径更改为:e:\\hosts\\start.bat 但结果/错误是一样的。 当我在 cmd 窗口中手动启动 bat 文件时,据我所知,主机会正确初始化并等待来自 Chrome 应用程序的消息。另外,当我添加该行时:

copy NUL empty.txt

在调用bat时创建一个空文件的“java - jar ...”行之前,该空文件是在手动启动bat时创建的,而不是在chrome应用程序“调用”时创建的。 任何帮助将不胜感激。

版本: Windows 7、Java 7u55、Chrome 34.0.1847.116 m

【问题讨论】:

  • 尝试使用cmd.exe /C e:\\hosts\\start.bat
  • @Xan 你的意思是把它放在json清单中吗?例如:“路径”:“cmd.exe /C e:\\hosts\\start.bat”
  • @Xan 上面的方法我试过了,还是不行。
  • 在 Chrome 中尝试 enabling logging 看看是否能发现问题。
  • @Xan 非常感谢您提供的日志记录提示。我在日志中发现了这一点,我认为这是我的问题的根源:本机消息传递主机尝试发送一条长度为 977472013 字节的消息。我猜这是java主机中的一个问题,它没有正确格式化响应(本机排序错误)。写下这个问题的答案,我会接受的。

标签: google-chrome google-chrome-app chrome-native-messaging


【解决方案1】:

要调试在 JS 上下文中没有给出有意义消息的错误,可以尝试使用Chrome logging;这可以提供更多信息(对您的情况有所帮助)。

【讨论】:

  • 它在技术上为问题作者做了;查看问题的 cmets。
  • 他说“写一个关于这个问题的答案,我会接受的。”
  • 请注意,由于这个答案被接受,我认为我什至不能删除它。考虑联系问题的作者以取消接受它。如果发生这种情况,我不介意。
【解决方案2】:

主机名过长。从注册表中删除当前主机并使用较短的名称重新创建它。如:REG ADD "HKCU\Software\Google\Chrome\NativeMessagingHosts\com.chrome.example" /ve /t REG_SZ /d "%~dp0com.google.chrome.example.echo-win.json" /f

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 2021-03-05
    • 1970-01-01
    • 2012-07-22
    相关资源
    最近更新 更多