当我尝试使用Aspectj代码编织jar文件时,我正在
java.util.zip.ZipException: duplicate entry org/apache/pig/backend/hadoop/execu
tionengine/physicalLayer/expressionOperators/Add.class
我使用以下命令编织jar文件
ajc -inpath C:\pig.jar -aspectpath C:\Aspects.jar -extdirs C:\libs -outjar C:\pig\pig.jar
任何人都可以告诉我原因吗?
答案 0 :(得分:0)
-extdirs
参数,AFAIK。<小时/> 的更新强>
那么如何在打包 outjar 时发生你提到的异常呢?
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.jar.JarOutputStream;
import java.util.zip.ZipEntry;
public class ZipExceptionDemo {
public static void main(String[] args) throws IOException {
try (JarOutputStream stream = new JarOutputStream(new FileOutputStream("foo.jar"))) {
stream.putNextEntry(new ZipEntry("com/foo/One.class"));
stream.putNextEntry(new ZipEntry("com/foo/Two.class"));
stream.putNextEntry(new ZipEntry("com/foo/UhOh.class"));
stream.putNextEntry(new ZipEntry("com/foo/UhOh.class")); // uh-oh!
}
}
}
Exception in thread "main" java.util.zip.ZipException: duplicate entry: com/foo/UhOh.class
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:215)
at java.util.jar.JarOutputStream.putNextEntry(JarOutputStream.java:109)
at ZipExceptionDemo.main(ZipExceptionDemo.java:12)
现在你的工作是找出你想要混合成多个JAR的同一个类的原因。您甚至知道要搜索哪一个:org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.Add
。
<小时/> 更新2:
我已经能够使用包含相同类文件的 inpath 中的两个 JAR或目录重现该问题。如果您的命令行如何能够获得该错误真的只有 inpath 上的一个条目,如你的问题所示,对我来说仍然是一个谜。无论如何,我已经为此问题提交了bug ticket。