无效的 LOC header(签名错误)
Invalid LOC header(bad signature)
我在 Maven 构建过程中遇到此错误。
无法在项目 dl4j-examples 上执行目标 org.apache.maven.plugins:maven-shade-plugin:2.4.3:shade(默认):创建着色 jar 时出错:无效的 LOC header(签名错误) -> [帮助1]
[错误]
这是我的 pom.xml 文件。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>${maven-shade-plugin.version}</version>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>${shadedClassifier}</shadedClassifierName>
<createDependencyReducedPom>true</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>org/datanucleus/**</exclude>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>reference.conf</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
我试过多次删除jar文件,好像都不行。
我也遇到了同样的问题,Ben 是对的,是 jar 文件损坏的情况。只需转到 .m2 repo 文件夹并从那里删除它,然后再次构建它(mvn clean install)。它会解决问题。
这个问题困扰我很久了
所以我决定自动识别和删除损坏的 jar
这是我为此目的创建的实用程序 class:
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.jar.JarFile;
public class MavenFix {
public static void main(String[] args) throws IOException {
Files.walk(Paths.get("C:/data/.m2/repository"))
.filter(file -> file.toString().endsWith("jar"))
.forEach(path -> {
try {
System.out.print(".");
new JarFile(path.toString(), true).getManifest();
} catch (Exception e) {
System.out.println();
System.out.println(path + " - " + e.getMessage());
try {
cleanAndDeleteDirectory(path.getParent().toFile());
} catch (IOException e1) {
System.err.println(e1.getMessage());
}
}
});
}
public static void cleanAndDeleteDirectory(File dir) throws IOException {
File[] files = dir.listFiles();
if (files != null && files.length > 0) {
for (File aFile : files) {
Files.delete(aFile.toPath());
}
}
Files.delete(dir.toPath());
}
}
我遇到同样的问题,只需将其从 .m2 文件夹中删除,然后重新构建,您的问题就会得到解决
我在 Maven 构建过程中遇到此错误。
无法在项目 dl4j-examples 上执行目标 org.apache.maven.plugins:maven-shade-plugin:2.4.3:shade(默认):创建着色 jar 时出错:无效的 LOC header(签名错误) -> [帮助1] [错误]
这是我的 pom.xml 文件。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>${maven-shade-plugin.version}</version>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>${shadedClassifier}</shadedClassifierName>
<createDependencyReducedPom>true</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>org/datanucleus/**</exclude>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>reference.conf</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
我试过多次删除jar文件,好像都不行。
我也遇到了同样的问题,Ben 是对的,是 jar 文件损坏的情况。只需转到 .m2 repo 文件夹并从那里删除它,然后再次构建它(mvn clean install)。它会解决问题。
这个问题困扰我很久了
所以我决定自动识别和删除损坏的 jar
这是我为此目的创建的实用程序 class:
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.jar.JarFile;
public class MavenFix {
public static void main(String[] args) throws IOException {
Files.walk(Paths.get("C:/data/.m2/repository"))
.filter(file -> file.toString().endsWith("jar"))
.forEach(path -> {
try {
System.out.print(".");
new JarFile(path.toString(), true).getManifest();
} catch (Exception e) {
System.out.println();
System.out.println(path + " - " + e.getMessage());
try {
cleanAndDeleteDirectory(path.getParent().toFile());
} catch (IOException e1) {
System.err.println(e1.getMessage());
}
}
});
}
public static void cleanAndDeleteDirectory(File dir) throws IOException {
File[] files = dir.listFiles();
if (files != null && files.length > 0) {
for (File aFile : files) {
Files.delete(aFile.toPath());
}
}
Files.delete(dir.toPath());
}
}
我遇到同样的问题,只需将其从 .m2 文件夹中删除,然后重新构建,您的问题就会得到解决