Communication error with Jack server , try ‘jack-diagnose‘ or see Jack server log 报错解决办法

本文详细阐述了在遇到'Communicationerror with Jackserver'错误时,如何通过检查端口号、配置文件修改和重启服务来解决。重点在于诊断端口冲突和服务器设置,适用于Android SDK开发者遇到类似问题时参考。

创作不易,请尊重原创,转载注明出处: https://blog.youkuaiyun.com/An_Times/article/details/121334749

Communication error with Jack server , try ‘jack-diagnose’ or see Jack server log 报错解决办法

报错log如下:

[100% 1/1] Ensure Jack server is installed and started
FAILED: /bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar  2>&1 || (exit 0) ) && (JACK_SERVER_VM_ARGUMENTS=\"-Dfile.encoding=UTF-8 -XX:+TieredCompilation\" prebuilts/sdk/tools/jack-admin start-server 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update server prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar 4.8.ALPHA 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-2.28.RELEASE.jar 2.28.RELEASE || exit 47; prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-3.36.CANDIDATE.jar 3.36.CANDIDATE || exit 47; prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-4.7.BETA.jar 4.7.BETA || exit 47 )"
Jack server already installed in "/home/songzhihao/.jack-server"
Communication error with Jack server (77), try 'jack-diagnose' or see Jack server log
Failed to contact Jack server: Problem reading /home/songzhihao/.jack-server/server.pem. Try 'jack-diagnose'
Failed to contact Jack server: Problem reading /home/songzhihao/.jack-server/server.pem. Try 'jack-diagnose'
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1

这里意思是说启动jack server失败,我们在prebuilts下用jack-admin命令确实是启动不了

android/prebuilts/sdk/tools$ ./jack-admin start-server

为什么会出现这种情况呢,我对比了其他同事的**.jack-server** 目录和 .jack-settings文件发现如下不同。

这是同事的jack-server目录文件:

liush@Ubunbtu-jcrjb-04:~/.jack-server$ ls -l
total 8952
-rw------- 1 liush liush    2094 Jan 29  2018 client.jks
-rw------- 1 liush liush    2806 Apr  8 19:22 client.pem
-rw------- 1 liush liush     282 Jan 29  2018 config.properties
drwxrwxr-x 2 liush liush    4096 Jan 29  2018 jack
-rw------- 1 liush liush 4378061 Jan 29  2018 launcher.jar
drwx------ 2 liush liush    4096 Apr  8 19:22 logs
-rw------- 1 liush liush 4758810 Jan 29  2018 server-1.jar
-rw------- 1 liush liush    2067 Jan 29  2018 server.jks
-rw------- 1 liush liush    1042 Apr  8 19:22 server.pem

在这里插入图片描述

打开/.jack-server/log/里面的log发现报错的地方是打开端口号错误了,通过查找其他解决办法,试了一下修改端口号的解决办法,发现是有效的,具体如下。

19:22:30.131: INFO: com.android.jack.server.JackHttpServer: Starting jack server version: 1.3-a8 '1.3' (291201 fcd657165d2fd6dcf1bf4c3002c9c8f75383e815 by android-jack-team@google.com)
19:22:30.160: INFO: com.android.jack.server.JackHttpServer: Starting service connection server on /127.0.0.1:8
19:22:30.165: SEVERE: com.android.jack.launcher.ServerLauncher: Server 1 Exception
com.android.jack.server.api.v01.ServerException: Problem while opening service port
        at com.android.jack.server.JackHttpServer.start(JackHttpServer.java:611)
        at com.android.jack.server.JackServerImpl.run(JackServerImpl.java:62)
        at com.android.jack.launcher.ServerLauncher$3.run(ServerLauncher.java:391)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.SocketException: Permission denied
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:433)
        at sun.nio.ch.Net.bind(Net.java:425)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:220)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:85)
        at com.android.jack.server.ServerParameters.openSocket(ServerParameters.java:88)
        at com.android.jack.server.ServerParameters.getServiceSocket(ServerParameters.java:67)
        at com.android.jack.server.JackHttpServer.start(JackHttpServer.java:605)
        ... 3 more

1、 SERVER_PORT_SERVICE 和 SERVER_PORT_ADMIN 的端口号改大点的数字,不要和别人重复。

songzhihao@Ubunbtu-jcrjb-04:~$ cat .jack-settings 
# Server settings
SERVER_HOST=127.0.0.1
SERVER_PORT_SERVICE=8926 
SERVER_PORT_ADMIN=8927

# Internal, do not touch
SETTING_VERSION=4

2、在.java-server目录下新建config.properties 文件,内容如下,注意这里的service.port 和admin.port要和上面.jack-settings里面的一样。

#
#Thur April 8 20:08:16 CST 2021
jack.server.max-jars-size=104857600
jack.server.max-service=4
jack.server.service.port=8926
jack.server.max-service.by-mem=1\=2147483648\:2\=3221225472\:3\=4294967296
jack.server.admin.port=8927
jack.server.config.version=2
jack.server.time-out=7200

3、最后给 .java-server/config.properties chmod 600 的权限,这样编译任何模块就可以编译通过了

在这里插入图片描述
注意:如果改完config.properties还是报端口打开错误,试着进入android/prebuilts/sdk/tools目录执行下面的命令将 jack-server重启一下。

jack-admin kill-server jack-admin start-server

希望这篇文章对遇到同样报错的同学有帮助,有用的话就点个赞吧 !

在连接 Jack 服务器时遇到 **SSL error when connecting to Jack server, try jack-diagnose** 错误,通常与 SSL/TLS 协议版本或加密算法的兼容性有关。以下是可能的原因和解决方案: ### 原因分析 - **TLS 版本不兼容**:Java 安全配置中禁用了较旧的 TLS 版本(如 TLSv1 和 TLSv1.1),而 Jack 服务器可能仍然依赖这些协议进行通信。 - **证书问题**:服务器端或客户端的 SSL 证书可能存在问题,例如过期、自签名或无法被信任链识别。 - **网络代理干扰**:某些环境中的 HTTPS 代理可能会拦截并修改 SSL 连接,导致握手失败。 ### 解决方案 #### 1. 修改 Java 安全配置以启用 TLSv1 和 TLSv1.1 编辑 `java.security` 文件(路径通常为 `/etc/java-8-openjdk/security/java.security` 或对应 JDK 的安装路径): ```bash sudo vi /etc/java-8-openjdk/security/java.security ``` 找到以下行: ```plaintext jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1 ``` 将其修改为: ```plaintext jdk.tls.disabledAlgorithms=SSLv3 ``` 保存文件后重启 Jack 服务或重新尝试编译操作[^5]。 #### 2. 使用 `jack-diagnose` 工具检查问题 运行 `jack-diagnose` 命令以获取更多关于连接失败的诊断信息: ```bash jack-diagnose ``` 这将显示当前 Jack 服务的状态,并提供可能的修复建议[^1]。 #### 3. 清理并重启 Jack 服务 如果上述方法无效,可以尝试清理 Jack 服务器缓存并重启服务: ```bash rm -rf ~/.jack-server/ jack-start ``` 确保使用正确的用户权限执行此操作,并确认 Jack 服务是否正常启动。 #### 4. 检查系统时间与证书有效性 SSL 握手对系统时间敏感。请确保系统时间准确无误,否则可能导致证书验证失败: ```bash timedatectl ``` 如有需要,同步时间服务器: ```bash sudo timedatectl set-ntp true ``` #### 5. 更新 JDK 或使用兼容版本 某些 JDK 版本对 TLS 支持较为严格。尝试更换到 OpenJDK 8 或其他已知兼容的版本,避免使用默认禁用旧 TLS 版本的 JDK(如 OpenJDK 11 及以上)[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mrsongs的心情杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值