【问题标题】:Chrome native messaging cannot execute batch fileChrome 原生消息无法执行批处理文件
【发布时间】:2015-08-09 16:48:59
【问题描述】:

这是我主机的清单:

{
   "allowed_origins" : 
    [ 
        "chrome-extension://EXTENSION_ID/"
    ],
   "description" : "my.app.host",
   "name" : "my.app.host",
   "path" : "‪C:\\chromejar\\launch.bat",
   "type" : "stdio"
}

这是我的 launch.bat 文件的内容:

setlocal enableextensions disabledelayedexpansion

for %%a in ("%~dp0\ChromeConnector.jar") do set "JARFILE=%%~fa"
    java -jar "%JARFILE%"
pause
  • 当我单独启动我的批处理文件时,它可以工作。
  • 当我使用 EXE 文件(用 c# 开发)从我的网站启动我的扩展程序时,它可以工作。
  • 但是当我使用 BAT 文件从我的网站启动我的扩展程序时,它似乎不起作用。

    1. 我可以只测试它的 BAT 部分吗? (从 BAT 中输入回显文本以在我的应用上查看结果?)

    2. 我尝试使用这一行启用 chrome 登录:start chrome --enable-logging --v=1 但在AppData\Local\Google\Chrome\User Data\chrome_debug.log 中似乎没有找到特定日志,我需要添加一些内容来记录特定错误吗?

      李>
    3. 目前我的 Java 代码就这么简单:

    public static void main(String[] args) { while(true) { } }

还有其他方法可以测试 jar 应用程序吗?

提前致谢

【问题讨论】:

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


    【解决方案1】:

    以下是您问题的一些答案:

    1.我可以只测试它的 BAT 部分吗? (从 BAT 中输入回显文本以在我的应用程序上查看结果?)

    在您的 BAT 中,您可以将 Java 程序的输出发送到文本文件。如果在尝试调用后文件存在,则意味着扩展能够启动本机应用程序,您将能够看到应用程序输出。例如,在 BAT 的第四行中,您可以这样做:

    java -jar "%JARFILE%" >> mybatfile.log
    

    2.我尝试使用以下行启用 chrome 登录: start chrome --enable-logging --v=1 但在 AppData\Local\Google\Chrome\User Data\chrome_debug.log 中似乎没有找到特定日志,我需要吗添加一些东西来记录特定的错误?

    查找包含“native_message_process_host.cc”的消息,例如:

    [4680:5612:0809/194917:ERROR:native_message_process_host.cc(291)] Native Messaging host tried sending a message that is 2036688930 bytes long.
    

    3.目前我的 Java 代码就这么简单:

    public static void main(String[] args) {
        while(true) { }
    }
    

    关于从 java 接收和发送 stdio 消息,请参阅这篇文章: Java native messaging with chrome extension - cannot correctly write length

    4.有没有其他方法可以测试jar应用?

    我建议从您的 java 应用程序生成日志,以便您查看接收和发送的消息,包括表示消息长度的前 4 个字节。

    【讨论】:

    • 您的回答对我有帮助,我实际上可以从日志中恢复此消息:错误:native_message_process_host.cc(291)] 本机消息传递主机尝试发送一条长度为 977472013 字节的消息。但实际上我不知道为什么。再次感谢
    • 消息中的前四个字节用于指定消息内容的长度。如果您忘记添加此部分并仅发送消息,例如“hello there”,前四个字节(即“hell”)将错误地视为表示大小的字节,以像您收到的那样巨大的消息大小结尾在日志中。
    猜你喜欢
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 2014-08-04
    • 1970-01-01
    • 2016-05-04
    相关资源
    最近更新 更多