Java 使用带有无效.class的JarOutputStream生成的JAR
我的目标是获取一些.class的流并创建一个JAR 问题是JAR创建的存储了.class,但不能用作类路径(它只是找不到类)。JAR没有损坏,如果我解压缩JAR,我可以使用.class。 那么,如果这个代码Java 使用带有无效.class的JarOutputStream生成的JAR,java,jar,Java,Jar,我的目标是获取一些.class的流并创建一个JAR 问题是JAR创建的存储了.class,但不能用作类路径(它只是找不到类)。JAR没有损坏,如果我解压缩JAR,我可以使用.class。 那么,如果这个代码 @Test public void createJARTest() throws IOException { final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); fi
@Test
public void createJARTest() throws IOException
{
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
final JarOutputStream jarOutputStream = new JarOutputStream( byteArrayOutputStream );
final String path = "/com/app/MyClass.class";
final JarEntry entry = new JarEntry( path );
jarOutputStream.putNextEntry( entry );
final BufferedInputStream in = new BufferedInputStream( this.getClass().getResourceAsStream(path) );
final byte[] buffer = new byte[1024];
int bytesRead = 0;
while ( (bytesRead = in.read( buffer )) != -1 )
{
jarOutputStream.write( buffer, 0, bytesRead );
}
in.close();
jarOutputStream.closeEntry();
jarOutputStream.close();
byteArrayOutputStream.writeTo( new FileOutputStream("/Downloads/classpath.jar") );
byteArrayOutputStream.close();
}
我发现了问题:
JarOutputStream有三个未记录的怪癖:
final JarEntry entry = new JarEntry( "com/app/MyClass.class" );