首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么插件与JDK1.6不兼容?

为什么插件与JDK1.6不兼容?
EN

Stack Overflow用户
提问于 2015-06-15 11:01:49
回答 1查看 441关注 0票数 0

根据官方的Grails医生,Grails2.4.2使用JDK1.6。就我而言,这意味着我可以在运行在JDK1.6上的执行环境中运行所有与Grails2.4.2一起工作的插件。

但是,当我试图将Grails应用程序的war文件部署到运行在JDK1.6上的Glassfish v3.1时,我遇到了与JDK1.6不兼容的依赖关系问题:

代码语言:javascript
复制
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之后,我发现这个问题是由Security插件的依赖引起的:

代码语言:javascript
复制
+--- 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是Security插件所依赖的工件nimbus-jose-jwt的一部分。

我觉得这个插件应该是JDK1.6兼容的,因为插件的页面上写着Grails版本: 2.0 > *。这是非常误导的,因为我花了相当长的时间开发,现在我意识到我甚至不能将它部署到生产中。它不是应该说Grails版本: 3.0 > *,还是我在这里误解了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-15 13:46:28

我怀疑Nimbus JOSE+JWT (由使用)之所以需要7+,是因为较少版本的7+不支持相同的加密。看看他们的网站,你会看到最低要求:

Nimbus JOSE + JWT库需要Java,并且依赖性最小。

您的假设仅仅因为插件支持Grails 2.0+就意味着它也支持JDK1.6,这只是一个假设,而且显然是不正确的。不需要Grails插件针对特定的Java兼容性级别。

您的开发是在没有使用生产环境中使用的Java的最小目标版本的情况下完成的,这才是真正的罪魁祸首。您应该始终按照目标生产环境的最低要求进行开发和测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30843518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档