java-SDK注入client时报错
【问题分类】
- bug
- P2P网络相关(包含libp2p,liquid)
- 链账户身份与权限相关(证书问题、public、多签投票问题)
- 核心交易引擎相关(交易池、DAG)
- 共识相关
- 智能合约相关
- 存储相关
- [
✅ ] SDK相关 - 长安链CMC工具
- 长安链管理台
- 长安链浏览器
- 长安链合约IDE
- 长安链web签名插件
- 跨链相关
- 轻节点相关
- 隐私计算相关
- 密码学相关
- 环境依赖
- 其他补充:
【问题描述】(请对问题进行描述,方便定位问题)
java-SDK注入client时报错,代码见下
package com.trustchain.chainmaker;
import org.chainmaker.sdk.ChainClient;
import org.chainmaker.sdk.ChainManager;
import org.chainmaker.sdk.User;
import org.chainmaker.sdk.config.NodeConfig;
import org.chainmaker.sdk.config.SdkConfig;
import org.chainmaker.sdk.utils.FileUtils;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
@Configuration
public class InitClient {
static final String CLIENT1_KEY_PATH = "crypto-config/public/user/admin1/admin1.sign.key";
static final String CLIENT1_CERT_PATH = "crypto-config/public/user/admin1/admin1.sign.crt";
static String CLIENT1_TLS_KEY_PATH = "crypto-config/public/user/admin1/admin1.tls.key";
static String CLIENT1_TLS_CERT_PATH = "crypto-config/public/user/admin1/admin1.tls.crt";
static final String ORG_ID1 = "public";
static String SDK_CONFIG = "sdk_config.yml";
static ChainManager chainManager;
static User user;
@Bean
public ChainClient inItChainClient() throws Exception {
ChainClient chainClient;
Yaml yaml = new Yaml();
InputStream in = InitClient.class.getClassLoader().getResourceAsStream(SDK_CONFIG);
SdkConfig sdkConfig;
sdkConfig = yaml.loadAs(in, SdkConfig.class);
assert in != null;
in.close();
for (NodeConfig nodeConfig : sdkConfig.getChainClient().getNodes()) {
List<byte[]> tlsCaCertList = new ArrayList<>();
if (nodeConfig.getTrustRootPaths() != null) {
for (String rootPath : nodeConfig.getTrustRootPaths()) {
List<String> filePathList = FileUtils.getFilesByPath(rootPath);
for (String filePath : filePathList) {
tlsCaCertList.add(FileUtils.getFileBytes(filePath));
}
}
}
byte[][] tlsCaCerts = new byte[tlsCaCertList.size()][];
tlsCaCertList.toArray(tlsCaCerts);
nodeConfig.setTrustRootBytes(tlsCaCerts);
}
chainManager = ChainManager.getInstance();
chainClient = chainManager.getChainClient(sdkConfig.getChainClient().getChainId());
if (chainClient == null) {
System.out.println("create client");
chainClient = chainManager.createChainClient(sdkConfig);
}
return chainClient;
}
@Bean
public User chainUser() throws Exception {
user = new User(ORG_ID1, FileUtils.getResourceFileBytes(CLIENT1_KEY_PATH),
FileUtils.getResourceFileBytes(CLIENT1_CERT_PATH),
FileUtils.getResourceFileBytes(CLIENT1_TLS_KEY_PATH),
FileUtils.getResourceFileBytes(CLIENT1_TLS_CERT_PATH), false);
return user;
}
}
【相关日志文件】(如果有报错日志请贴图,或者上传附件)
【系统信息】(请填写系统信息,方便定位问题)
- chainmaker-go version * : [v2.3.0]
- OS & version * :
- docker镜像 version:
-
管理台 version:
- 如果是管理台的相关问题,请附带管理台版本,如果不是可忽略。
-
区块浏览器 version:
- 如果是浏览器的相关问题,请附带浏览器版本,如果不是可忽略。
-
合约IDE version:
- 如果是合约IDE的相关问题,请附带合约IDE版本,如果不是可忽略。
-
web签名插件 version:
- 如果是web签名插件的相关问题,请附带web签名插件版本,如果不是可忽略。
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information