オブジェクトをObjectOutputStreamで書き出してJarOutputStreamでJarファイルにて、
そのJarファイルをJarInputStreamで読み込んでObjectInputStreamのコンストラクターを呼び出したところで例外が飛んできます…
以下のようなことをしていますが、どうにも成功しません。

出力

①オブジェクトをObjectOutputStreamで一時出力

②出力された一時ファイルをObjectInputStreamで読み込む

③ストリームからbyte[]を取得

JarOutputStreamで書き出し

圧縮しなければ問題ないので、①と②に問題はないかと…

具体的には

//一時ファイル書き出しは省略
//tempFileは書き出した場所とおなじFileクラス。

//例外処理省略

byte[] objectData = ObjectInput(tempFile);//読み込む

jos = new JarOutputStream(new FileOutputStream(new File("test.jar")));
jos.setMethod(JarOutputStream.STORED); //無圧縮を指定

JarEntry entry = new JarEntry("data");  //格納ファイル名

entry.setSize(objectData.length);   //データサイズをセット

CRC32 crc = new CRC32();
crc.update(objectData);
entry.setCrc(crc.getValue());   //CRCをセット

jos.putNextEntry(entry);
jos.write(objectData);

/* 条件によって複数ファイル格納 */
//テスト時はファイルいっこだけで試してみました。

jos.flush();

最初のObjectInputはこんな感じになってます

public static byte[] ObjectInput(File file) throws IOException{

        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
        byte[] data = new byte[(int) file.length()];

        ois.read(data);

        ois.close();
        return data;
    }

出力自体は成功してるように思います。
出力されたファイル内のtestが格納されており、
ファイルサイズがもとの一時ファイルと一致しているので…

CRCがメタデータなのか、ファイルに含まれるのか、
よくわからないのでそこが原因かもしれませんが…

読み込み

①指定されたファイル(ここでは上記したファイルを読み込む)をJarInputStreamで読み込む

.getNextJarEntry()を使ってJarEntryを取得

(ファイルは正しいものとして進めさせてください。実際圧縮しなければ読み込めました。)

FileOutputStreamで一時出力

④一時ファイルをObjectInputStreamで読み込む←ここで例外が飛ぶ

⑤オブジェクトを.readObject()で取得

例外の内容としては、
java.io.StreamCorruptedException: invalid stream header: 00000000

もし圧縮すると、
java.io.StreamCorruptedException: invalid stream header: 504B0304

という例外が同じところで飛んできます。

あとなんかハイライトされなんですけど、私が悪いんでしょうか(^_^;)


バイト列を用いることで解決しました。
失礼しました。