gpt4 book ai didi

java - 如何修复此 java.lang.ClassCastException : [B cannot be cast to java. util.List

转载 作者:行者123 更新时间:2023-11-29 04:12:47 25 4
gpt4 key购买 nike

我正在用 Java 创建一个数字签名软件,我想要该软件使用参数(字符串文件名、字符串 key 文件)验证消息。但是我在行中遇到了这个异常

this.list2 = (List<byte[]>) in.readObject();

java.lang.ClassCastException: [B cannot be cast to java.util.List. How to solve this?

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.nio.file.Files;
import java.security.*;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;

private boolean verifySignature(byte[] data, byte[] signature, String
keyFile) throws Exception {
Signature sig = Signature.getInstance("SHA1withRSA");
sig.initVerify(getPublic(keyFile));
sig.update(data);

return sig.verify(signature);
}

public void VerifyMessage(String filename, String keyFile) throws Exception
{
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(filename)))
{

this.list2 = (List<byte[]>) in.readObject();
}

lbl13.setText(verifySignature(list2.get(0), list2.get(1), keyFile) ? "VERIFIED MESSAGE" +
"\n----------------\n" + new String(list2.get(0)) : "Could not verify the signature.");
}

最佳答案

You are trying to cast your in.readObject() file to a List

这在 Java 中不起作用,因为该文件是作为 byte[] 数组数据结构而不是数组列表编写的。在将其作为 this.list2 的值之前,您必须将 byte[] 数组转换为列表。

以下是您可以如何做到这一点:

this.list2 = Arrays.asList((byte[])in.readObject());

Array.asList() 会将您的字节基元数组转换为列表(根据您的代码,我假设您使用的是字节基元而不是此处的 Byte 类)。在 Java 中不可能简单地将 Array 转换为 List。

关于java - 如何修复此 java.lang.ClassCastException : [B cannot be cast to java. util.List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54085491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com