Я получаю следующее исключение, когда запускаю свой mvn install
. Я даже удалил локальный репозиторий и снова запустился, получив такое же исключение.
[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: maven-shade-plugin: 2.1: shade (по умолчанию) в пакете cores проекта: ошибка при создании затененного jar: недопустимый заголовок LOC (неверная подпись) -> [Help 1 ]
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>commons-logging:commons-logging:jar:*</exclude>
</excludes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<!-- workaround for a spring issues -->
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<!-- don't want to pick up any other log4j.xml -->
<exclude>log4j.xml</exclude>
</excludes>
</filter>
</filters>
<!-- May be needed to work around another issue in Spring -->
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
Ошибка:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default) on project cores-batch: Error creating shaded jar: invalid LOC header (bad signature) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default) on project cores-batch: Error creating shaded jar: invalid LOC header (bad signature)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error creating shaded jar: invalid LOC header (bad signature)
at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:528)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1400(ZipFile.java:56)
at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:679)
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:415)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at org.codehaus.plexus.util.IOUtil.copy(IOUtil.java:189)
at org.codehaus.plexus.util.IOUtil.copy(IOUtil.java:175)
at org.apache.maven.plugins.shade.DefaultShader.addResource(DefaultShader.java:427)
at org.apache.maven.plugins.shade.DefaultShader.shade(DefaultShader.java:186)
at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:458)
... 21 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
maven
jakarta-ee
deployment
jar
Karthick
источник
источник
mvn dependencies validate
или около того ...Ответы:
Вы должны проверить, какая банка вызывает проблемы. Это должно быть повреждено. Удалите эту банку и
mvn spring-boot:run
снова введите команду. Может быть, больше, чем одна банка повреждена, поэтому каждый раз, когда вам нужно выполнить эту команду, чтобы удалить эту банку. В моем случаеmvn spring-boot:run
команда mysql, jackson, aspect jars была повреждена 3 раза, и я выяснил это и удалил jars из.m2
папки. Теперь проблема решена.источник
Файл jar может быть поврежден. Попробуйте удалить содержимое следующей папки:
Затем щелкните правой кнопкой мыши свой проект, выберите Maven, Обновить проект, установите флажок Принудительное обновление снимков / выпусков.
источник
invalid LOC header
в сборке Gradle, вы просто удаляете~/.gradle/caches
папку (Linux).Главной проблемой являются поврежденные банки.
Чтобы найти поврежденную, вам нужно добавить точку останова исключения Java в представлении точек останова Eclipse или предпочитаемую IDE, выбрать
java.util.zip.ZipException
класс и перезапустить экземпляр Tomcat.Когда JVM приостанавливается в точке
ZipException
останова, вы должны перейти кJarFile.getManifestFromReference()
трассировке стека и проверить атрибут,name
чтобы увидеть имя файла.После этого вы должны удалить файл из файловой системы, а затем щелкнуть правой кнопкой мыши свой проект, выбрать Maven, Обновить проект, проверить принудительное обновление снимков / выпусков.
источник
Из gsitgithub / find-currupt-jars.txt следующая команда выводит список всех поврежденных jar-файлов в хранилище:
Вы можете удалить поврежденные файлы JAR и перекомпилировать проект.
Пример вывода:
источник
sudo find ./repository/ -name "*jar" | sudo xargs -L 1 zip -T | grep error | grep invalid
дает мнеxargs: zip: No such file or directory
. это использует bash на Ubuntu для Windows, fyizip -T
(тестирование) для каждогоrepository
файла jar , затем фильтрует, какие файлы являются недопустимыми сжатыми файлами. У вас естьzip
команда?zip -T
на каждой банке, хранящейся в.m2/repository
. В Windows вы можете запустить его на Cygwin (/cygdrive/C/Users/torno/.m2/repository
), как я, и я думаю, что вы также можете запустить его с Bash на Windows 10 (/mnt/c/Users/torno/.m2/repository
). Я не исследовал, как написать эквивалентный сценарий с PowerShell, и я думаю, что это не должно быть возможно с помощью команды cmd.Я хотел бы дать свою практику.
Используйте предпочитаемую IDE, например, затмение здесь:
источник
Решение для меня было запустить
mvn
с-X
:Затем просматривайте вывод в обратном направлении, пока не увидите сбой, и продолжайте, пока не увидите последний файл jar, который mvn пытался обработать:
Посмотрите на последнюю банку, прежде чем она не удалась, и удалите ее из локального хранилища, т.е.
источник
Похоже, проблема конфигурации для компилятора maven в вашем файле pom. Версия по умолчанию java source и target is 1.5, даже у JDK более высокая версия.
Чтобы исправить это, добавьте раздел конфигурации плагина компилятора maven с более высокой версией Java, например:
Для получения дополнительной информации проверьте эти ссылки:
компилятор maven
отчет об ошибке
источник
Этот ответ не для DevOps / системных администраторов, а для тех, кто использует IDE, например, eclipse и сталкивается с
invalid LOC header (bad signature)
проблемой.Вы можете принудительно обновить зависимости maven следующим образом:
источник
Вот небольшой детектор, написанный на Java, просто скопируйте и запустите :)
источник
Мы можем форсировать проверку контрольной суммы в maven по крайней мере с двумя вариантами:
1. Добавление
--strict-checksums
к нашей команде .2.Добавив следующую конфигурацию в наш файл настроек maven:
Более подробно в этом посте: https://dzone.com/articles/maven-artifact-checksums-what
источник
Помимо удаления .m2 / repository, удалите приложение с сервера, запустите сервер (без приложений), остановите его и снова добавьте приложение. Теперь это должно работать. По какой-то причине простая очистка серверных папок из интерфейса не дает того же эффекта.
источник
Я столкнулся с этой проблемой при развертывании моего уха в моей локальной инстанции в Интернете. Очистка локального хранилища и сборка ушей снова решили проблему для меня.
источник