我创建了一个Play应用,供学生在我的用户界面课程作业中使用。他们不需要修改它,只需通过AJAX访问它。我用了#34; activator dist"将其打包在JAR文件中;他们将它下载到他们的计算机上,解压缩并在本地运行。
除了一名学生外,它对所有人都有效。我的智慧结束了调试,并呼吁社区提出想法。
例外是:
Exception in thread "main" java.lang.NoSuchMethodError: ch.qos.logback.classic.LoggerContext.getFrameworkPackages()Ljava/util/List;
at play.api.Logger$.configure(Logger.scala:268)
at play.api.Logger$.configure(Logger.scala:232)
at play.api.inject.guice.GuiceApplicationBuilder.applicationModule(GuiceApplicationBuilder.scala:73)
at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:126)
at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:93)
at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
at play.core.server.ProdServerStart$.start(ProdServerStart.scala:52)
at play.core.server.ProdServerStart$.main(ProdServerStart.scala:27)
at play.core.server.ProdServerStart.main(ProdServerStart.scala)
我们检查过的事情: 他正在运行Java 1.8.0_45。它是用Java 1.8.0_66编译的。他重新安装了Java(我假设它是1.8.0_66或更高)。没变。 下载jar文件的md5校验和与原始文件匹配。 lib / ch.qos.logback.logback-classic-1.1.3.jar存在并且在他的机器上具有与我相同的大小。 我们在他的机器上安装了scala / Play / Activator,复制了源代码并尝试从头开始在他的机器上进行编译。同样的错误。 我查看了#34; activator dist"编写的脚本。我相信它会调用与我们从命令行看到的相同版本的java。也就是说,我不认为我们被两个java运行时副本混淆了。 这是在El Capitan的MacBook Pro(视网膜前)上。
想法?