【问题标题】:Maven repository has an invald java.lang.IllegalStateExceptionMaven 存储库有一个无效的 java.lang.IllegalStateException
【发布时间】:2019-03-01 10:16:14
【问题描述】:

我想构建一个 API Web 应用程序相关的 REST 服务。 在部署 API 应用程序之前,我遇到了一个问题:

Exception in thread "main" java.lang.IllegalStateException: Failed to read Class-Path attribute from manifest of jar file:/C:/Users/Lukas/.m2/repository/org/hibernate/hibernate-entitymanager/5.0.12.Final/hibernate-entitymanager-5.0.12.Final.jar
    at org.springframework.boot.devtools.restart.ChangeableUrls.getUrlsFromClassPathOfJarManifestIfPossible(ChangeableUrls.java:110)
    at org.springframework.boot.devtools.restart.ChangeableUrls.fromUrlClassLoader(ChangeableUrls.java:96)
    at org.springframework.boot.devtools.restart.DefaultRestartInitializer.getUrls(DefaultRestartInitializer.java:93)
    at org.springframework.boot.devtools.restart.DefaultRestartInitializer.getInitialUrls(DefaultRestartInitializer.java:56)
    at org.springframework.boot.devtools.restart.Restarter.<init>(Restarter.java:140)
    at org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:546)
    at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationStartingEvent(RestartApplicationListener.java:67)
    at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationEvent(RestartApplicationListener.java:45)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:122)
    at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:69)
    at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:48)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:292)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
    at com.autoparts.autoeshop.Application.main(Application.java:12)
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:60)
    at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:734)
    at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:434)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
    at sun.misc.IOUtils.readFully(IOUtils.java:65)
    at java.util.jar.JarFile.getBytes(JarFile.java:425)
    at java.util.jar.JarFile.getManifestFromReference(JarFile.java:193)
    at java.util.jar.JarFile.getManifest(JarFile.java:180)
    at org.springframework.boot.devtools.restart.ChangeableUrls.getUrlsFromManifestClassPathAttribute(ChangeableUrls.java:131)
    at org.springframework.boot.devtools.restart.ChangeableUrls.getUrlsFromClassPathOfJarManifestIfPossible(ChangeableUrls.java:107)
    ... 16 more

我怎样才能找到解决问题的方法?

【问题讨论】:

    标签: java rest maven api spring-boot


    【解决方案1】:

    如果你使用 eclipse,试试这个。

    检查您的 Maven 存储库。

    Windows + R => 复制和粘贴 => C:/Users/Lukas/.m2/repository

    1) 如果它确实存在。 (C:/Users/Lukas/.m2/repository)

    2) Eclipse > 包资源管理器(或项目资源管理器)> R-Click >

    “Maven 安装”后的“Maven Clean”

    Eclipse > 包资源管理器(或项目资源管理器)> R-Click >

    “Maven > 更新项目...”

    3) 如果不存在。 (C:/Users/Lukas/.m2/repository)

    4) 找到你的 maven 存储库的真实路径,然后在你的 Eclipse 中更新存储库路径 偏好。

    点击“重新索引”按钮后,将您的存储库路径复制并粘贴到“本地存储库”。

    5)如果仍然有错误,请在 pom.xml 文件中添加以下代码。 然后,执行 2)。

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.0.12.Final</version>
    </dependency>
    

    6) 运行您的项目

    【讨论】:

    • 它正在工作。首先,感谢您所做的一切。但最后一个问题:“错误:无法找到或加载主类 com.autoparts.autoeshop.Application” 我试过 uesd cmd 行:C:\Users\Lukas\AutoEShop\autoeshop\src\main\java\com\autoparts \autoeshop>设置类-“C:\Program Files\Java\jdk1.8.0_181\bin”;系统提示:环境变量类-“C:\Program Files\Java\jdk1.8.0_181\bin”;未定义
    【解决方案2】:

    这是一个表明工件损坏的常见错误。从 maven 本地存储库中手动删除它并尝试再次构建。

    为此,请删除

    中的所有内容
    C:/Users/Lukas/.m2/repository/org/hibernate/hibernate-entitymanager
    

    mvn compile 在项目目录中。

    【讨论】:

    • 不起作用。同样是关于类路径的问题。 Windows cmd 无法识别“mvn compile”。我认为我应该删除所有 .m2 文件,然后可能一切正常。我会尝试这样做。
    • 如果你从 Eclipse 运行,你也必须从 Eclipse 运行 maven。至于“无法识别”的 mvn - 配置您的 PATH,它将被“神奇地”识别
    猜你喜欢
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2015-07-18
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多