public static void setResource(String path) {
JarFile jarFile = null;
String name = null;
try {
name = ChangeJar.class.getProtectionDomain().getCodeSource()
.getLocation().getFile();
jarFile = new JarFile(name);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ZipEntry outEntry = jarFile.getEntry(path);
JarOutputStream jos = null;
try {
jos = new JarOutputStream(new FileOutputStream(name));
jos.putNextEntry(outEntry);
java.io.OutputStreamWriter bw = new OutputStreamWriter(jos);
java.io.BufferedWriter bww = new BufferedWriter(bw);
bww.write("askdfalskdfjaslkfdja;slkdf222223333333alksdjfqpowier");
bww.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
ChangeJar.setResource("taro/data/data.dat");
}
}
打包后,提示错误如下
java.util.zip.ZipException: invalid entry size (expected 38 but got 52 bytes)
at java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:189)
at java.util.zip.ZipOutputStream.finish(ZipOutputStream.java:288)
at java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.java:14
1)
at java.util.zip.ZipOutputStream.close(ZipOutputStream.java:310)
at sun.nio.cs.StreamEncoder$CharsetSE.implClose(StreamEncoder.java:431)
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:160)
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:222)
at java.io.BufferedWriter.close(BufferedWriter.java:250)
at taro.ChangeJar.setResource(ChangeJar.java:32)
at taro.ChangeJar.main(ChangeJar.java:41)