【发布时间】:2016-04-18 05:58:42
【问题描述】:
我一直在我的 JAR 上运行优化器。我一直想知道为什么。今天想替换单个.class文件,打开jar看到/cz/autoclient/目录下的这个:
难怪档案馆无法处理这种混乱局面。我找到了some advice on maven-compiler-plugin 配置,但没有帮助。这是我在pom.xml 中的构建配置:
<build>
<testSourceDirectory>${test.dir}</testSourceDirectory>
<sourceDirectory>${src.dir}</sourceDirectory>
<resources>
<resource>
<directory>${resource.dir}</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-proc:none</compilerArgument>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>cz.autoclient.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>src/</classpathPrefix>
<mainClass>cz.autoclient.Main</mainClass>
</manifest>
</archive>
<outputDirectory>${project.build.directory}/</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
我真的需要解决它。除了 JAR 优化器,它还破坏了 java 官方工具:
jar uf AutoClient.jar version
java.util.zip.ZipException: duplicate entry: cz/autoclient/autoclick/ColorPixel.class
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:233)
at java.util.jar.JarOutputStream.putNextEntry(JarOutputStream.java:109)
at sun.tools.jar.Main.update(Main.java:630)
at sun.tools.jar.Main.run(Main.java:269)
at sun.tools.jar.Main.main(Main.java:1233)
是什么导致了重复的类文件以及如何解决这个问题?只有/cz/autoclient/ 中的文件——即编译后的源代码——似乎是重复的。
【问题讨论】:
-
请发布您的完整 pom,或 maven 运行的完整日志。 ${src.dir}、${test.dir} 和 ${resource.dir} 的值是多少?它们可能重叠。您可能对程序集插件使用的东西有重复。