Java 使用可执行Jar文件的Chrome本机消息传递

Java 使用可执行Jar文件的Chrome本机消息传递,java,chrome-native-messaging,Java,Chrome Native Messaging,我已经创建了一个Chrome扩展,并将nativeMessaging权限添加到清单中 我正在打开本机消息传递主机的端口 本机消息传递主机的清单指向一个可执行jar文件 当我启动扩展时,没有错误,连接看起来很好,但是jar文件中的代码似乎从未运行过。(对于测试,我显示了一个在main()方法中创建的新JFrame。双击jar文件时,它会显示JFrame。但是,当通过Chrome本机消息传递运行jar文件时,JFrame不会显示 我遗漏了什么吗?您的主要姓名中有大写字母吗? 我有这个问题+相同的症状

我已经创建了一个Chrome扩展,并将nativeMessaging权限添加到清单中

我正在打开本机消息传递主机的端口

本机消息传递主机的清单指向一个可执行jar文件

当我启动扩展时,没有错误,连接看起来很好,但是jar文件中的代码似乎从未运行过。(对于测试,我显示了一个在main()方法中创建的新JFrame。双击jar文件时,它会显示JFrame。但是,当通过Chrome本机消息传递运行jar文件时,JFrame不会显示


我遗漏了什么吗?

您的主要姓名中有大写字母吗? 我有这个问题+相同的症状,这为我解决了它 (尽管我现在得到了一个不同的错误)

{
“name”:“com.google.chrome.example.echoUppercase”,我使用Java可执行包装器(我使用的)实现了这一点

这是清单文件:

{
    "name": "com.your.application",
    "description": "Your description.",
    "path": "path\\to\\wrapped\\java\\host.exe",
    "type": "stdio",
    "allowed_origins": [
        "chrome-extension://idofyourchromeextension/"
    ]
}
这是我包装的本机主机应用程序:

import javax.swing.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.URISyntaxException;

public class ChromeHandler
{
    static public void main(String[] args)
    {
        InputStream input = System.in;
        try
        {
            System.in.available();
        }
        catch (Exception e)
        {
            return;
        }
        char receivedChar;
        try{
            FileOutputStream output = new FileOutputStream("PathToTextFile");
            while((receivedChar = (char) input.read()) != -1)
            {
                output.write(receivedChar);
                //My messages only have the '}' character at the end.
                if(receivedChar == '}')
                {
                    return;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我通过让chrome启动一个包含以下内容的bat文件,成功实现了这一目标:

@echo off
java -jar your_file.jar %*

回音关闭是一个细节,我花了一些时间才弄清楚。

y是否成功实现了此功能?Java程序从未成功过。我最终使用了另一种语言。@Hairofdog我成功创建了一种语言。如果您仍然感兴趣,我可以帮您。@farukdgn您能告诉我如何使用清单运行jar文件吗file@HarshaXsoad我已经添加了它作为一个答案。很抱歉响应太晚。谢谢你,我没有使用java实现就迷路了。我会尽快尝试它。顺便问一下什么是“套接字”?它是未定义的。我对套接字进行了注释并尝试了你的解决方案,但它仍然给我“与本机消息传递主机通信时出错”错误。你能让它成功运行吗。你能帮我一下吗。@HarshaXsoad是的,它成功运行了。我在为你编辑时忘记删除
socket
部分。请确保你的清单文件和注册表项正确且一致。仔细检查
allowed\u origins
。谢谢你,伙计R我选择C++用于我的项目,因为这对我也不起作用。但是肯定的是,因为这个代码为你工作,可能还有其他原因。我稍后再试试,看看有什么不对。谢谢你的帮助。BAT文件不会把文本发回谷歌浏览器。这是错误的,很多人会浪费时间D。这样做。请发布如何直接从json运行jar。chrome的示例也是一个启动python程序的.bat。工作正常。