Spring启动应用程序启动错误

时间:2017-08-21 01:44:13

标签: spring spring-boot

我在从控制台运行时正在使用Spring启动应用程序我收到以下错误。请帮我解决这个问题。在IDE中,我无法看到异常,也只能看到生成此堆栈跟踪的命令行。尝试使用不同的java更新(8u121,8u131,8u144)。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.context.annotation.internalPersistenceAnnotationProcessor': Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/persistence/PersistenceContext
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1116) ~[spring-beans-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1060) ~[spring-beans-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) ~[spring-beans-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:202) ~[spring-context-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:702) ~[spring-context-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:527) ~[spring-context-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.3.RELEASE.jar!/:1.4.3.RELEASE]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.3.RELEASE.jar!/:1.4.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.3.RELEASE.jar!/:1.4.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.3.RELEASE.jar!/:1.4.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.3.RELEASE.jar!/:1.4.3.RELEASE]
        at com.websystique.springboot.SpringBootCRUDApp.main(SpringBootCRUDApp.java:15) [classes!/:1.0.0]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_121]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_121]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_121]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [SpringBootCRUDApplicationExample-1.0.0.jar:1.0.0]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [SpringBootCRUDApplicationExample-1.0.0.jar:1.0.0]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [SpringBootCRUDApplicationExample-1.0.0.jar:1.0.0]
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) [SpringBootCRUDApplicationExample-1.0.0.jar:1.0.0]
Caused by: java.lang.NoClassDefFoundError: javax/persistence/PersistenceContext
        at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.<clinit>(PersistenceAnnotationBeanPostProcessor.java:172) ~[spring-orm-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_121]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_121]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_121]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_121]
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142) ~[spring-beans-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89) ~[spring-beans-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1108) ~[spring-beans-4.3.5.RELEASE.jar!/:4.3.5.RELEASE]
        ... 24 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.persistence.PersistenceContext
        at java.net.URLClassLoader$1.run(Unknown Source) ~[na:1.8.0_121]
        at java.net.URLClassLoader$1.run(Unknown Source) ~[na:1.8.0_121]
        at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_121]
        at java.net.URLClassLoader.findClass(Unknown Source) ~[na:1.8.0_121]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_121]
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94) ~[SpringBootCRUDApplicationExample-1.0.0.jar:1.0.0]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_121]
        ... 32 common frames omitted
Caused by: java.util.zip.ZipException: invalid distance too far back
        at java.util.zip.InflaterInputStream.read(Unknown Source) ~[na:1.8.0_121]
        at org.springframework.boot.loader.jar.ZipInflaterInputStream.read(ZipInflaterInputStream.java:52) ~[SpringBootCRUDApplicationExample-1.0.0.jar:1.0.0]
        at sun.misc.Resource.getBytes(Unknown Source) ~[na:1.8.0_121]
        at java.net.URLClassLoader.defineClass(Unknown Source) ~[na:1.8.0_121]
        at java.net.URLClassLoader.access$100(Unknown Source) ~[na:1.8.0_121]
        ... 39 common frames omitted

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.websystique.springboot</groupId>
    <artifactId>SpringBootCRUDApplicationExample</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>SpringBootCRUDApplicationExample</name>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.3.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
        <h2.version>1.4.187</h2.version>
    </properties>

    <dependencies>
        <!-- Add typical dependencies for a web application -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Add freemarker template support -->        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <!-- Add JPA support -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!-- Add Hikari Connection Pooling support -->
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
        </dependency>
        <!-- Add H2 database support [for running with local profile] -->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>${h2.version}</version>
        </dependency>

        <!-- Add MySQL database support [for running with PRODUCTION profile] -->       
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.5</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin><!-- Include if you want to make an executable jar[FAT JAR which 
                    includes all dependencies along with sprinboot loader] that you can run on 
                    commandline using java -jar NAME -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

另外请查看上面的POM xml,如果我缺少任何依赖项,请更新我。相同的代码在其他机器上正常工作

1 个答案:

答案 0 :(得分:0)

请尝试使用此pom.xml以使用1.5.4.RELEASE版本的Spring启动和当前版本的h2数据库,确保在重新启动应用程序之前下载所有依赖项,如果您使用的是eclipse还要确保将maven存储库更新到项目中。希望它有所帮助。有许多依赖项,因此需要时间才能正确下载所有依赖项。父条目应如下所示:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
    </parent>

此处的一些其他信息:为了使SpringBootCRUDApp项目准备就绪,您可以使用1.4.x1.5.x Spring启动版本,只需确保已下载所有依赖项正确地从Maven,否则java.lang.NoClassDefFoundError将被抛出。

在正确下载所有依赖项之后,Spring引导1.4.x会发生一些有趣的事情,因为执行代码时出现了一个新错误java.lang.IllegalStateException: required key [datasource.sampleapp.hibernate.dialect] not found

为什么会这样?:这是因为在application.yml属性文件中列出了可用的配置文件。

spring:
  profiles: local, default

引发错误是因为昏迷后的空格,为了纠正它只是删除空格(仅当使用Spring Boot 1.4.x时)

spring:
  profiles: local,default

因为值

而发生

" default"未被检测为defult配置文件,因为Spring引导期望"default"没有空格,此行为仅发生在SB 1.4.x

为什么在Spring启动时1.5x没有错误?好吧,这是因为对配置过程进行了一些很好的改进,以便正确读取spring.profiles属性并避免在昏迷后出现空白时出现问题,实际上只有在有很多配置文件时才会发生这种情况。没有人是活跃的,也没有检测到default个人资料。