入力ストリームとして jar があります。ストリームから直接 JarEntry を読み取りたい。jar ファイルがなく、一時的な jar ファイルを作成したくありません。
私はこのようなコードを試しました:
JarInputStream jis = new JarInputStream(in);
JarEntry je = null;
while ((je = jis.getNextJarEntry()) != null)
{
byte[] classbytes = new byte[(int) je.getSize()];
System.out.println("size of array: " + classbytes.length);
jis.read(classbytes, 0, classbytes.length);
}
このコードの問題: je.getSize() は -1 を返します (jarEntry サイズが不明であることを意味します)。
1) たぶん、これを回避する方法を知っていますか?
2) jarEntry のサイズが不明な理由をご存知でしょうか? (私はEclipse File>Export>Jar Fileを使用して作成しました)