urlyy_ 2022-09-13 01:09 采纳率: 60%
浏览 24
已结题

fabric-gateway-sdk整合进springboot并进行打包、部署后不能正常访问配置文件

问题遇到的现象和发生背景

将fabric-sdk-java作为工具类整合进入了springboot项目,在本地跑是没问题的,但是打jar包部署到服务器上就会报错

Caused by: java.nio.file.NoSuchFileException: 
src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem
项目内文件夹情况

crypto-config内部太长了就不截了,但是文件是都有的

img

FabricUtil类(用来调用链码的类)
@Component
@Data
public class FabricUtil {
    private Network network;
    private Contract contract;

    @PostConstruct
    public void init() throws IOException, CertificateException, InvalidKeyException {
        Properties properties = new Properties();
        InputStream inputStream = FabricUtil.class.getResourceAsStream("/fabric.config.properties");
        properties.load(inputStream);

        String networkConfigPath = properties.getProperty("networkConfigPath");
        String channelName = properties.getProperty("channelName");
        String contractName = properties.getProperty("contractName");
        //使用org1中的user1初始化一个网关wallet账户用于连接网络
        String certificatePath = properties.getProperty("certificatePath");

        X509Certificate certificate = readX509Certificate(Paths.get(certificatePath));

        String privateKeyPath = properties.getProperty("privateKeyPath");
        PrivateKey privateKey = getPrivateKey(Paths.get(privateKeyPath));

        Wallet wallet = Wallets.newInMemoryWallet();
        wallet.put("user1", Identities.newX509Identity("Org1MSP", certificate, privateKey));

        //根据connection.json 获取Fabric网络连接对象
        Gateway.Builder builder = Gateway.createBuilder()
                .identity(wallet, "user1")
                .networkConfig(Paths.get(networkConfigPath));
        //连接网关
        Gateway gateway = builder.connect();
        //获取通道
        Network network = gateway.getNetwork(channelName);
        //获取合约对象
        Contract contract = network.getContract(contractName);
        this.contract = contract;
        this.network = network;
    }

    private static X509Certificate readX509Certificate(final Path certificatePath) throws IOException, CertificateException {
        try (Reader certificateReader = Files.newBufferedReader(certificatePath, StandardCharsets.UTF_8)) {
            return Identities.readX509Certificate(certificateReader);
        }
    }

    private static PrivateKey getPrivateKey(final Path privateKeyPath) throws IOException, InvalidKeyException {
        try (Reader privateKeyReader = Files.newBufferedReader(privateKeyPath, StandardCharsets.UTF_8)) {
            return Identities.readPrivateKey(privateKeyReader);
        }
    }
}
fabric.config.properties
# 网络配置文件路径
networkConfigPath = src/main/resources/connection.json
# 用户证书路径
certificatePath = src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem
# 用户私钥路径
privateKeyPath = src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk

# 通道名字
channelName = mychannel

# 链码名字
contractName = my_fabric
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 9月21日
    • 创建了问题 9月13日

    悬赏问题

    • ¥15 单纯型python实现编译报错
    • ¥15 c++2013读写oracle
    • ¥15 c++ gmssl sm2验签demo
    • ¥15 关于模的完全剩余系(关键词-数学方法)
    • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
    • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
    • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
    • ¥15 安装quartus II18.1时弹出此error,怎么解决?
    • ¥15 keil官网下载psn序列号在哪
    • ¥15 想用adb命令做一个通话软件,播放录音