我创建了一个Chrome扩展程序,其中nativeMessaging权限已添加到清单中。
我正在打开本地消息传递主机的端口。
我的本机消息传递主机的清单指向可执行jar文件。
当我启动扩展程序时,没有错误,连接似乎很好,但我的jar文件中的代码似乎永远不会运行。 (为了测试,我展示了一个在main()方法中创建的新JFrame。当双击jar文件时,它会显示JFrame。但是当通过Chrome Native Messaging运行jar文件时,JFrame不会显示。 / p>
我有什么遗失的吗?
答案 0 :(得分:1)
你的主要名字中有大写字母吗? 我有这个问题+相同的症状,这解决了我 (虽然我现在得到一个不同的错误)
{ “name”:“com.google.chrome.example.echoUppercase”,< - 不会工作 ....
“name”:“com.google.chrome.example.echouppercase”,< - 有效 }
答案 1 :(得分:1)
我已经设法使用Java可执行包装器(我使用Launch4j)。
这是清单文件:
{
"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();
}
}
}
答案 2 :(得分:1)
我设法通过让Chrome启动包含以下内容的bat文件来实现它:
@echo off
java -jar your_file.jar %*
回声是一个细节,花了我一些时间来弄清楚。