我一直在我的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/
中的文件 - 这是编译后的来源 - 似乎是重复的。
答案 0 :(得分:0)
首先你应该删除它:
<testSourceDirectory>${test.dir}</testSourceDirectory>
<sourceDirectory>${src.dir}</sourceDirectory>
<resources>
<resource>
<directory>${resource.dir}</directory>
</resource>
</resources>
除了你100%知道你在做什么,但根据你的帖子你不知道。所以删除它..
此外,使用maven-assembly-plugin的更新版本,而不是这样的古老版本...请参阅此处:https://maven.apache.org/plugins/