Chrome 本机消息传递 - 启动另一个应用程序时断开连接

Chrome native messaging - disconnected when launching another app

我想做什么?

我正在尝试基于这样的架构编写应用程序:

  1. chrome 扩展程序在我的计算机上启动一个应用程序(.jar 文件)
  2. 应用程序启动另一个应用程序(外部的,不是我写的),我正在向它传递数据,它为用户显示 window,用户向它输入一些数据,然后这个应用程序 return将数据发送到父应用程序
  3. 父应用程序处理子应用程序响应并将其发送回 chrome 扩展程序

怎么了?

当显示子应用的window时,chrome扩展断开连接(恰好同时发生)。接下来,结果是不会返回到 chrome 扩展。

有效方法:

  1. 如果我省略点号。 2(只是模拟子应用程序的答案),结果 returned 到 chrome 扩展。
  2. 包括所有要点:子应用程序 returns 结果正确。父应用程序捕获它并尝试 return 它到 chrome 扩展(不成功,扩展已断开连接)

也试过

我尝试使用 java 多线程(ExecutorCompletionService、Callable、Future)来实现,我想在单独的线程中启动子应用程序并阻塞主线程直到子应用程序完成,但它没有帮不上忙

已解决!

chrome 扩展和我的应用程序之间的通信是通过标准 input/output。在我的应用程序代码中的某处(用 java 编写)调用了 System.out.println。它在 STDOUT 上造成了一些混乱,并使应用程序与扩展程序断开连接。正如我所见,它与启动外部应用程序同时发生,可能不是完全同时发生,而是某个时间 before/after,人们看不到。

多线程与此问题无关。

解决方案

我找到并删除了所有写入标准输出的代码