应用程序启动正常“启动”,当我执行java -jar时无法启动。我错过了什么?

时间:2018-02-02 21:00:04

标签: java spring spring-boot spring-boot-actuator

您好,我有一个多项目设置,我们已经继承并尝试dockerize。我能够使用spring boot cmd成功运行应用程序:

SPRING_PROFILES_ACTIVE=local ./gradlew :products:myapp:bootRun

但是,当我执行以下操作时:

java -jar -Dspring.profiles.active=local myapp.jar

我正面临错误:

`Caused by: java.lang.ClassNotFoundException: javax.validation.bootstrap.ProviderSpecificBootstrap
        at java.net.URLClassLoader$1.run(URLClassLoader.java:370) ~[na:1.8.0_91]
        at java.net.URLClassLoader$1.run(URLClassLoader.java:362) ~[na:1.8.0_91]
        at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_91]
        at java.net.URLClassLoader.findClass(URLClassLoader.java:361) ~[na:1.8.0_91]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_91]
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94) ~[myapp.jar:na]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_91]
        ... 43 common frames omitted
    Caused by: java.util.zip.ZipException: invalid code lengths set
        at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164) ~[na:1.8.0_91]
        at org.springframework.boot.loader.jar.ZipInflaterInputStream.read(ZipInflaterInputStream.java:52) ~[myapp.jar:na]
        at sun.misc.Resource.getBytes(Resource.java:124) ~[na:1.8.0_91]
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:462) ~[na:1.8.0_91]
        at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[na:1.8.0_91]
        at java.net.URLClassLoader$1.run(URLClassLoader.java:368) ~[na:1.8.0_91]
        ... 49 common frames omitted

`我的Application.java有

    @Import({
    EmbeddedServletContainerAutoConfiguration.class,
    ManagementServerPropertiesAutoConfiguration.class,
    HealthEndpointConfigImpl.class,
    EndpointAutoConfiguration.class,
    EndpointWebMvcAutoConfiguration.class
})
public class Application
{}

此产品的gradle文件:

apply plugin: 'java'

dependencies {


    compile group: 'org.springframework', name: 'spring-context', version: rev_spring
    compile group: 'org.springframework', name: 'spring-webmvc', version: rev_spring
    compile group: 'org.springframework.boot', name: 'spring-boot-actuator', version: rev_spring_boot
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: rev_spring_boot

    testCompile group: 'junit', name: 'junit', version: rev_junit
    testCompile group: 'org.mockito', name: 'mockito-all', version: rev_mockito
    testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: rev_hamcrest
    testCompile group: 'org.springframework', name: 'spring-test', version: rev_spring
}

apply plugin: 'org.springframework.boot'

以外的gradle文件:

configure(subprojects.findAll { it.buildFile.exists() }) {
buildscript {
    dependencies {
        classpath group: 'org.springframework.boot', name: 'spring-boot-gradle-plugin', version: rev_spring_boot
    }
}

plugins.withId('java') {
    processResources {
        inputs.properties(['version': version])
        doLast {
            ant.propertyfile(file: new File("${sourceSets.main.output.resourcesDir}/config/application.properties")) {
                entry key: 'spring.application.version', value: version
            }
        }
    }
}

plugins.withId('org.springframework.boot') {
    configurations.all {
        resolutionStrategy.dependencySubstitution {
            substitute module('org.springframework.boot:spring-boot-starter-tomcat') with module("org.springframework.boot:spring-boot-starter-jetty:${rev_spring_boot}")
        }
    }

    springBoot {
        backupSource = false
        layout = 'JAR'
    }

    bootRepackage {
        withJarTask = jar

    }

我在这一点上陷入困​​境。试图研究错误,但没有多大帮助。 我猜导入EmbeddedServletContainerAutoConfiguration.class是罪魁祸首,但想知道为什么当我们将它作为弹簧启动运行时,它没问题。

0 个答案:

没有答案