当我尝试使用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
有人能告诉我为什么吗?
1条答案
按热度按时间pkbketx91#
首先,ajc不知道
-extdirs
阿法伊克,帕拉马特。我也觉得很奇怪,你的outjar和injar同名,只是在另一个子目录中。这使得在下一次编织或仅仅使用库时,很容易把一个错当成另一个。
“duplicate entry”可能来自pig.jar和aspects.jar中包含的同一个类。“maybe”是一个错误的猜测,请参阅下面评论部分中andy clement和我之间的讨论。更新2中描述了真正的原因。
更新:
那么,在打包outjar时,您提到的异常怎么会发生呢?
现在你的工作是找出为什么你在多个jar里有相同的类,你想把它们混合到一个jar里。你甚至知道要搜索哪一个:
org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.Add
.更新2:
我已经能够用inpath上包含相同类文件的两个jar或目录重现这个问题。如果您的命令行在inpath上只有一个条目(如您的问题所示),那么您是如何得到这个错误的,对我来说仍然是个谜。不管怎样,我已经为这个问题提交了一份错误通知单。