【发布时间】:2015-08-30 20:25:50
【问题描述】:
根据the official Grails docs,Grails 2.4.2 可以与 JDK 1.6 一起使用。就我而言,这意味着我可以在 JDK 1.6 上运行的执行环境中运行所有适用于 Grails 2.4.2 的插件。
但是,当我尝试将 Grails 应用程序的 war 文件部署到在 JDK 1.6 上运行的 Glassfish v3.1 时,我遇到了不符合 JDK 1.6 的依赖项问题:
Caused by: java.lang.UnsupportedClassVersionError: WEB9032: Class com.nimbusds.jwt.JWT has unsupported major or minor version numbers, which are greater than those found in the Java Runtime Env
ironment version 1.6.0_07
at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:948)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1485)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1368)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
at java.lang.Class.getDeclaredMethods(Class.java:1791)
... 55 more
运行dependency-report后发现问题是Spring Security REST Plugin的依赖引起的:
+--- org.grails.plugins:spring-security-rest:1.5.1
| \--- net.spy:spymemcached:2.11.6
| \--- com.google.guava:guava-io:r03
| \--- com.google.guava:guava-annotations:r03
| \--- com.google.guava:guava-base:r03
| \--- org.pac4j:pac4j-core:1.6.0
| \--- org.pac4j:pac4j-oauth:1.6.0
| \--- org.apache.commons:commons-lang3:3.1
| \--- org.scribe:scribe:1.3.6
| \--- com.fasterxml.jackson.core:jackson-databind:2.0.6
| \--- com.fasterxml.jackson.core:jackson-annotations:2.0.6
| \--- com.fasterxml.jackson.core:jackson-core:2.0.6
| \--- com.nimbusds:nimbus-jose-jwt:3.9
| \--- net.jcip:jcip-annotations:1.0
| \--- net.minidev:json-smart:1.1.1
| \--- org.bouncycastle:bcprov-jdk15on:1.51
| \--- commons-io:commons-io:2.4
导致问题的类 com.nimbusds.jwt.JWT 是工件 nimbus-jose-jwt 的一部分,Spring Security REST 插件依赖于它。
我觉得这个插件应该是 JDK 1.6 兼容的,因为插件页面上写着 Grails version: 2.0 > *。这是非常具有误导性的,因为我花了很多时间进行开发,现在我意识到我什至无法将它部署到生产中。不应该是 Grails 版本:3.0 > *,还是我在这里误解了什么?
【问题讨论】:
-
我是
spring-security-rest的作者。老实说,我不知道 Nimbus 的这种要求,这就是为什么没有做广告的原因。另一方面,使用 Java 6,当不仅它而且 Java 7 都已经不受支持时,我感觉很奇怪。无论如何,我会在文档中提到最低版本要求。 -
感谢您抽出宝贵时间对此发表评论。老实说,我对这个快速回复感到非常惊讶,并且很高兴现在将记录下来,因为我喜欢你的插件并且讨厌我无法在生产中使用它的事实。它在 JDK 1.7 上就像一个魅力。遵循文档,除了过滤器链之外不需要配置任何东西。很棒的插件,除了未记录的 JDK 问题,没有任何批评的意思!
标签: rest grails dependency-management jwt