简体   繁体   English

无法启动 web 应用程序 in.WAR 文件:java.lang.ClassNotFoundException

[英]Can't start web application in .WAR file : java.lang.ClassNotFoundException

I have a grails application written in Groovy. It is built and works when it's launched with:我有一个用 Groovy 编写的 grails 应用程序。它在启动时构建并运行:

./gradlew bootRun

Now I want to run it with java to put it in a Docker container.现在我想用 java 运行它,将它放入 Docker 容器中。 This is the Dockerfile I prepared:这是我准备的Dockerfile:

FROM openjdk:8-jdk-alpine

ARG JAR_FILE=build/libs/*.war
ADD ${JAR_FILE} app.war

ENTRYPOINT ["java"]
CMD ["-Dgrails.env=development","-jar","app.war"]

The server fails to start because of the following error:由于以下错误,服务器无法启动:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [grails.boot.config.GrailsApplicationPostProcessor]: Factory method 'grailsApplicationPostProcessor' threw exception; nested exception is java.lang.ClassNotFoundException: com.flosslab.eGrocery.showcase.CmsTagLib
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
        ... 29 more
Caused by: java.lang.ClassNotFoundException: com.flosslab.eGrocery.showcase.CmsTagLib

When I checked the classes folder in WEB-INF, I found that the class is there in the correct path.当我查看 WEB-INF 中的 classes 文件夹时,我发现 class 在正确的路径中。 I tried with a Tomcat setup, with Docker and without Docker and I'm still encountering the exact same error.我尝试使用 Tomcat 设置、Docker 和没有 Docker 的设置,但我仍然遇到完全相同的错误。 I think something is wrong with the.WAR build.我认为 .WAR 构建有问题。 Here is the build.gradle file这是 build.gradle 文件

build.gradle: build.gradle:

buildscript {
    ext {
        grailsVersion = project.grailsVersion
    }
    repositories {
        mavenLocal()
        maven { url "https://repo.grails.org/core" }
        maven { url "https://repo.grails.org/grails/core" }
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath "org.grails:grails-gradle-plugin:$grailsVersion"
        classpath "com.bertramlabs.plugins:asset-pipeline-gradle:2.5.0"
//        classpath "org.grails.plugins:hibernate4:5.0.2"
        classpath 'org.springframework:springloaded:1.2.8.RELEASE'
        classpath "gradle.plugin.com.github.viswaramamoorthy:gradle-util-plugins:0.1.0-RELEASE"
    }
}

version "1.0.49"

group "com.flosslab.egrocery"

apply plugin: "com.github.ManifestClasspath"
apply plugin: "eclipse"
apply plugin: "idea"
apply plugin: "war"
apply plugin: "org.grails.grails-web"
apply plugin: "org.grails.grails-gsp"
apply plugin: "asset-pipeline"

war.archiveName = "egrocery-showcase.war"

ext {
    grailsVersion = project.grailsVersion
    gradleWrapperVersion = project.gradleWrapperVersion
}

repositories {
    mavenLocal()
    maven { url "https://repo.grails.org/core" }
    maven { url "https://repo.grails.org/grails/core" }
    maven { url "http://192.168.12.16:8081/artifactory/egrocery-local" }
    maven { url "http://192.168.12.16:8081/artifactory/libs-release-local" }
    maven { url "http://192.168.12.16:8081/artifactory/plugins-release-local" }
    mavenCentral()
}

dependencyManagement {
    imports {
        mavenBom "org.grails:grails-bom:$grailsVersion"
    }
    applyMavenExclusions false
}

def elasticsearchVersion = '5.6.8'
ext['elasticsearch.version'] = elasticsearchVersion

dependencies {
    compile fileTree(dir: "libs", includes: ["*.jar"])
    
    compile "com.flosslab.egrocery:domain:1.0.49"

    compile "org.springframework.boot:spring-boot-starter-logging"
    compile "org.springframework.boot:spring-boot-autoconfigure"
    compile "org.springframework.boot:spring-boot-starter-actuator"
    provided "org.springframework.boot:spring-boot-starter-tomcat"


    compile "org.grails:grails-core"
    compile "org.grails:grails-dependencies"
    compile "org.grails:grails-web-boot"
    compile "org.grails:grails-datastore-rest-client:5.0.3.RELEASE"
    console "org.grails:grails-console"

    profile "org.grails.profiles:web:$grailsVersion"

    compile "org.grails.plugins:cache"
    compile "org.grails.plugins:scaffolding"
    compile "org.grails.plugins:hibernate4"
    compile "org.grails.plugins:spring-security-rest:2.0.0.M2"
    compile "org.grails.plugins:spring-security-rest-gorm:2.0.0.M2"
    runtime "org.grails.plugins:asset-pipeline"

    runtime group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.7'
    runtime group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.7'
//    compile group: 'org.elasticsearch', name: 'elasticsearch', version: elasticsearchVersion
//    compile group: 'org.elasticsearch.client', name: 'transport', version: elasticsearchVersion

//    compile "org.grails.plugins:elasticsearch:1.4.1"

    compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.13'

    compile "org.hibernate:hibernate-ehcache"
    compile "org.grails.plugins:cache-ehcache:3.0.0.BUILD-SNAPSHOT"

    compile "net.sf.ehcache:ehcache:2.10.2.2.21"
    compile "net.sf.ehcache:ehcache-core:2.6.11"

    compile "com.google.code.maven-play-plugin.net.tanesha.recaptcha4j:recaptcha4j:0.0.8"

    runtime group: "org.postgresql", name: "postgresql", version: "42.1.4"

    compile group: "net.java.dev.jna", name: "platform", version: "3.5.0"

    compile group: "com.nimbusds", name: "nimbus-jose-jwt", version: "4.8"
    compile group: "org.pac4j", name: "pac4j-core", version: "1.8.3"
    compile "org.grails.plugins:fields"

    testCompile "org.grails:grails-plugin-testing"
//    testCompile "org.grails.plugins:geb"
    testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1"
    testRuntime "net.sourceforge.htmlunit:htmlunit:2.18"
}

configurations {
    all {
        exclude module: "bcmail-jdk14"
        exclude module: "bctsp-jdk14"
        exclude group: "com.google.guava", module: "guava"
        exclude group: "com.google.guava", module: "guava-base"
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = gradleWrapperVersion
}

assets {
    minifyJs = true
    minifyCss = true
}

gradle.properties: gradle.属性:

grailsVersion=3.1.8
gradleWrapperVersion=2.11

Maybe there is something is lacking or something is wrong with the grails/groovy version?也许缺少某些东西或者 grails/groovy 版本有问题? I'm stuck for the entire day so I would appreciate your help.我被困了一整天,所以我很感激你的帮助。


Update: Here is the Dockerfile I tried with Tomcat that I mentionned earlier.更新:这是我之前提到的 Dockerfile 和 Tomcat 一起试过的。 It gives me the exact same error.它给了我完全相同的错误。

FROM tomcat:8.5.75-jdk8-temurin
COPY egrocery-showcase.war /usr/local/tomcat/webapps
CMD ["catalina.sh", "run"]

I can't believe I wasted two days straight on this because someone wrote the package with an uppercase letter.我不敢相信我在这上面浪费了两天时间,因为有人用大写字母写了 package。 There was a class in a package:一个package中有一个class:

package com.flosslab.eGrocery.showcase

When I changed it to当我把它改成

package com.flosslab.egrocery.showcase

I got past this error.我克服了这个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.lang.ClassNotFoundException 与 Tomcat WAR 文件 - java.lang.ClassNotFoundException with Tomcat WAR file 无法解析 java.lang.ClassNotFoundException - Can't resolve java.lang.ClassNotFoundException 使用Java Web Start启动Eclipse应用程序会生成java.lang.ClassNotFoundException:org.eclipse.swt.SWTError - Launching eclipse application with java web start generates java.lang.ClassNotFoundException: org.eclipse.swt.SWTError Java / Hibernate-尝试启动我的Web应用程序,并发生java.lang.ClassNotFoundException - Java/Hibernate-Try to start my web application and an java.lang.ClassNotFoundException occurs Web 应用程序上的 Eclipse tomcat 启动 java.lang.ClassNotFoundException: org.mockito.Mockito - Eclipse tomcat on web application start java.lang.ClassNotFoundException: org.mockito.Mockito java.lang.ClassNotFoundException:无法成功加载类源 - java.lang.ClassNotFoundException: can't successfully load the class source 无法运行Jar,在主文件上获取java.lang.ClassNotFoundException - Can't run Jar, getting a java.lang.ClassNotFoundException on the main file 无法实例化应用程序java.lang.ClassNotFoundException - Unable to instantiate application java.lang.ClassNotFoundException 无法实例化应用程序:java.lang.ClassNotFoundException: - Unable to instantiate application: java.lang.ClassNotFoundException: java.lang.ClassNotFoundException: application.VideoPlayer - java.lang.ClassNotFoundException: application.VideoPlayer
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM