【问题标题】:NoClassDefFoundError: java.sql.Date when running Play 2.6 using gradle pluginNoClassDefFoundError:使用 gradle 插件运行 Play 2.6 时的 java.sql.Date
【发布时间】:2018-04-10 23:35:20
【问题描述】:

有人对 play gradle 插件很满意吗?我正在尝试运行 Play Framework 2.6 入门项目。我可以从 SBT 正常运行,但是从 gradle 运行时出现以下错误:

play.api.UnexpectedException: Unexpected exception[NoClassDefFoundError: java/sql/Date]
        at play.core.server.DevServerStart$$anon$1.reload(DevServerStart.scala:190)
        at play.core.server.DevServerStart$$anon$1.get(DevServerStart.scala:124)
        at play.core.server.AkkaHttpServer.handleRequest(AkkaHttpServer.scala:202)
        at play.core.server.AkkaHttpServer.$anonfun$createServerBinding$1(AkkaHttpServer.scala:117)
        at akka.stream.impl.fusing.MapAsync$$anon$25.onPush(Ops.scala:1194)
        at akka.stream.impl.fusing.GraphInterpreter.processPush(GraphInterpreter.scala:519)
        at akka.stream.impl.fusing.GraphInterpreter.processEvent(GraphInterpreter.scala:482)
        at akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter.scala:378)
        at akka.stream.impl.fusing.GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:

我正在使用带有以下 build.gradle 的 Java 1.8:

plugins {
    id 'play'
    id 'idea'
}

def playVersion = "2.6.13"
def scalaVersion = System.getProperty("scala.binary.version", /* default = */ "2.12")

model {
    components {
        play {
            platform play: playVersion, scala: scalaVersion, java: '1.8'
            injectedRoutesGenerator = true

            sources {
                twirlTemplates {
                    defaultImports = TwirlImports.JAVA
                }   
            }   
        }   
    }   
}

dependencies {
    play "com.typesafe.play:play-guice_$scalaVersion:$playVersion"
    play "com.typesafe.play:play-logback_$scalaVersion:$playVersion"
    play "com.h2database:h2:1.4.196"

    playTest "org.assertj:assertj-core:3.6.2"
    playTest "org.awaitility:awaitility:2.0.0"
}

repositories {
    jcenter()
    maven {
        name "lightbend-maven-releases"
        url "https://repo.lightbend.com/lightbend/maven-release"
    }   
    ivy {
        name "lightbend-ivy-release"
        url "https://repo.lightbend.com/lightbend/ivy-releases"
        layout "ivy"
    }   
}

【问题讨论】:

    标签: gradle playframework playframework-2.6


    【解决方案1】:

    您需要设置 java_home 以使用 Java 1.8 版本。显然,play gradle 插件需要一个 java home。

    export JAVA_HOME=YOUR_JAVA_LOCATION
    

    $ source .bash_profile
    
    $ echo $JAVA_HOME
    

    【讨论】:

      【解决方案2】:

      我发现了问题,我的 $JAVA_HOME 设置为我的 Java 9 路径,但 java/javac 设置为 Java 8。这导致我的 gradle 使用了错误的 java 版本。修复我的 $JAVA_HOME 后,它可以正常工作。

      我会留下这个,以防其他人遇到这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-11
        • 1970-01-01
        • 2018-07-22
        • 1970-01-01
        • 2017-02-06
        • 2019-11-08
        • 1970-01-01
        • 2023-04-11
        相关资源
        最近更新 更多