【问题标题】:errors starting a simple spring boot application启动一个简单的 Spring Boot 应用程序时出错
【发布时间】:2017-02-03 03:34:49
【问题描述】:

我正在尝试运行一个简单的 Spring Boot 应用程序,我已经用适当的参数填充了 application.properties 以创建基于 jpa 和 mysql 配置的数据源,并且我在 pom.xml 中指定了我的应用程序的一些依赖项可能需要才能运行,但是当我启动我的应用程序时仍然遇到同样的错误,这是我的配置文件,我希望我能在这里得到一些帮助! 我希望应用程序在一开始就使用 orm techonolgy 在我的数据库中创建表,但我遇到了这些错误!!

pom.xml 文件

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>objectExchange</groupId>
<artifactId>exchange</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>objectExchange</name>
<description>ObjectExchange Spring Boot</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

application.properties 文件

spring.datasource.url = jdbc:mysql://localhost:3306/db_objexchange
spring.datasource.username = root
spring.datasource.password =
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.jpa.database = MYSQL
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy  
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

申请文件:

package com;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ObjectExchangeApplication {

    public static void main(String[] args) {
        SpringApplication.run(ObjectExchangeApplication.class, args);
    }
}

jpa 的持久化类

package com.entities;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class utilisateur implements Serializable {
    @Id
    @GeneratedValue
    private Long id;
    private String nom;
    private String prenom;
    public utilisateur() {
        super();
    }
    public utilisateur(Long id, String nom, String prenom) {
        super();
        this.id = id;
        this.nom = nom;
        this.prenom = prenom;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getNom() {
        return nom;
    }
    public void setNom(String nom) {
        this.nom = nom;
    }
    public String getPrenom() {
        return prenom;
    }
    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }

}

这是我的应用程序中的文件,我不断收到这些错误:

:: Spring Boot ::        (v1.4.1.RELEASE)

2016-09-25 19:59:02.908  INFO 4952 --- [           main] com.ObjectExchangeApplication            : Starting ObjectExchangeApplication on user-PC with PID 4952 (C:\Users\user\workspace\objectExchange\target\classes started by user in C:\Users\user\workspace\objectExchange)
2016-09-25 19:59:02.918  INFO 4952 --- [           main] com.ObjectExchangeApplication            : No active profile set, falling back to default profiles: default
2016-09-25 19:59:03.277  INFO 4952 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1eb5ee5: startup date [Sun Sep 25 19:59:03 WEST 2016]; root of context hierarchy
2016-09-25 19:59:05.193  WARN 4952 --- [           main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [jar:file:/C:/Users/user/.m2/repository/mysql/mysql-connector-java/5.1.39/mysql-connector-java-5.1.39.jar!/com/mysql/fabric/FabricCommunicationException.class]; nested exception is java.util.zip.ZipException: invalid LOC header (bad signature)
2016-09-25 19:59:05.284 ERROR 4952 --- [           main] o.s.boot.SpringApplication               : Application startup failed


org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [jar:file:/C:/Users/user/.m2/repository/mysql/mysql-connector-java/5.1.39/mysql-connector-java-5.1.39.jar!/com/mysql/fabric/FabricCommunicationException.class]; nested exception is java.util.zip.ZipException: invalid LOC header (bad signature)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:303) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:248) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:137) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:275) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:237) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:204) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:173) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:324) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:246) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:98) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:681) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:523) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at com.ObjectExchangeApplication.main(ObjectExchangeApplication.java:10) [classes/:na]
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method) ~[na:1.8.0_92]
at java.util.zip.ZipFile.access$1400(Unknown Source) ~[na:1.8.0_92]
at java.util.zip.ZipFile$ZipFileInputStream.read(Unknown Source) ~[na:1.8.0_92]
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(Unknown Source) ~[na:1.8.0_92]
at java.util.zip.InflaterInputStream.read(Unknown Source) ~[na:1.8.0_92]
at java.io.FilterInputStream.read(Unknown Source) ~[na:1.8.0_92]
at java.io.BufferedInputStream.fill(Unknown Source) ~[na:1.8.0_92]
at java.io.BufferedInputStream.read1(Unknown Source) ~[na:1.8.0_92]
at java.io.BufferedInputStream.read(Unknown Source) ~[na:1.8.0_92]
at org.springframework.asm.ClassReader.readClass(ClassReader.java:463) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.asm.ClassReader.<init>(ClassReader.java:426) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:53) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:98) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:279) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
... 19 common frames omitted

我真的希望我能尽快得到一些帮助,非常感谢大家!!

【问题讨论】:

    标签: java xml spring maven jpa


    【解决方案1】:

    你的错误是这样的:

    读取候选组件类失败:URL [jar:file:/C:/Users/user/.m2/repository/mysql/mysql-connector-java/5.1.39/mysql-connector-java-5.1.39.jar!/ com/mysql/fabric/FabricCommunicationException.class]; 嵌套异常是 java.util.zip。ZipException: 无效的 LOC 标头 (错误的签名)

    这表明mysql-connector-java-5.1.39.jar 已损坏。

    解决方案

    删除C:/Users/user/.m2/repository(或至少C:/Users/user/.m2/repository/mysql/mysql-connector-java/)。

    这将强制 maven 在您重建时重新下载 mysql-connector-java 的 jar(即:mvn clean install)。

    【讨论】:

      【解决方案2】:

      包含依赖

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      

      而不是

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-jpa</artifactId>
      </dependency>
      

      在您的 POM.xml 中

      另一个问题可能是 .m2 文件夹中的 mysql jar。尝试删除 jar 文件,更新您的 pom.xml 并重试。

      【讨论】:

      • 我已经包含了这两个依赖项,但是我仍然得到同样的错误!!
      • 我已删除 spring-boot-starter-data-jpa 依赖项,但它是 jpa 所必需的,因此必须包含它!
      • 还有其他建议吗??
      • mysql jar 文件似乎有问题,因为编译器无法解压缩它。您是否删除了位于 .m2 文件夹中的 mysql jar?
      • 是的,它起作用了,我已经删除了 .m2 文件夹,它运行良好!
      【解决方案3】:

      在做项目时,我偶然发现了一个不准确但类似的错误。

      原因:org.apache.ignite.IgniteCheckedException:未能在:org.springframework.boot.loader.jar.ZipInflaterInputStream@...中找到配置。

      在我的例子中,这种错误的真正原因是删除了 SpringBoot 配置 XML 文件中的一个参数。我没有看到错误的真正原因,但事实是......

      正确配置运行没有错误如下:

        <beans profile="local,default">
      <bean class="org.apache.ignite.configuration.IgniteConfiguration">
      

      导致相同错误的不正确配置已删除“默认”参数:

        <beans profile="local">
      <bean class="org.apache.ignite.configuration.IgniteConfiguration">
      

      最后一个配置是在 SpringBott 应用启动时导致同样的错误。 在我的例子中,配置参数与 Apache Ignite 有关。清理 /.m2/ 和 Gradle 缓存文件夹没有帮助。

      作为另一种解决方案,可以通过指定明确的 Spring 配置文件来运行应用程序,例如:

      java -jar -Dspring.profiles.active=local xxx_YOUR_FAT_JAR-FILE.jar
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-27
        • 1970-01-01
        • 1970-01-01
        • 2018-11-19
        • 2015-03-14
        • 1970-01-01
        • 2023-04-10
        • 2021-05-18
        相关资源
        最近更新 更多