首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Glassfish服务器不能与JDK 8一起使用

Glassfish服务器不能与JDK 8一起使用
EN

Stack Overflow用户
提问于 2012-10-30 13:13:07
回答 2查看 11K关注 0票数 6

我在NetBeans的一个web项目中使用了JDK8和lambda,但是当我将它部署到glassfish时,它显示了这个错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any>

这是由包含lambda表达式的代码行引起的。

我尝试更改glassfish设置以使用JDK8,但是我没有让它工作。

有没有办法让它工作呢?

EN

回答 2

Stack Overflow用户

发布于 2014-03-24 11:39:07

我观察到了结合使用Java4和GlassFish 8的各种奇怪的行为。似乎是这样的,当使用Java1.8中引入的新语法时,使用新功能的类将在启动时触发一个ArrayIndexOutOfBoundsException,内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Exception while visiting
 martinandersson/com/malivechat/ejb/events/EventService.class of size
 7094

 java.lang.ArrayIndexOutOfBoundsException: 25966
   at org.objectweb.asm.ClassReader.readClass(ClassReader.java:2015)
   at org.objectweb.asm.ClassReader.accept(ClassReader.java:469)
   at org.objectweb.asm.ClassReader.accept(ClassReader.java:425)
   at org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:362)
   at com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.handleEntry(ReadableArchiveScannerAdapter.java:165)
   at com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.onSelectedEntries(ReadableArchiveScannerAdapter.java:127)
   at org.glassfish.hk2.classmodel.reflect.Parser.doJob(Parser.java:347)
   at org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:67)
   at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:306)
   at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:295)
   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at java.lang.Thread.run(Thread.java:744)

GlassFish检查的类有时会在“崩溃”中幸存下来,可以在应用程序中正确使用,有时则不能。崩溃的类有时会阻碍应用程序的部署。GlassFish抱怨说,无法找到或实例化所需类型的bean。有时,崩溃的类不会阻碍部署的成功,但当他被使用时,类会以某种方式失败。例如,注入到bean中的资源将失败,您的应用程序将不可避免地抛出NullPointerException

除了GlassFish不支持JDK1.8这一事实之外,每次我尝试构建我的项目时,Java本身似乎都会崩溃,我的JavaFX应用程序有时会停机,他使用的各种组件也非常有out。因此,产品代码绝对不应该在一段时间内升级到Java 1.8。

更新

我在EclipseLink 2.5.2-M1上也遇到了严重的问题。我的一个实体类在Java 1.7中工作得很好,后来我在其中添加了一些简洁的JDK 8语法。在那之后,EclipseLink拒绝让实体类成为JPA关系的目标。EclipseLink说实体类是一个“非实体”类型。当我将JDK8代码重写成遗留的1.7代码时,一切又都正常工作了。

更新2014-07-03

JavaJPA4.0.1-B05JPA1.8代码只有一个问题:GlassFish实体类。这意味着出现问题的是EclipseLink。但是我可以确认Java 1.8代码可以在EJB:s和CDI托管bean中工作。

票数 7
EN

Stack Overflow用户

发布于 2012-10-30 17:04:05

我尝试用JDK8运行GlassFish,但也无法启动。

提交了一份JIRA问题GLASSFISH-19263,用于跟踪目的。

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

https://stackoverflow.com/questions/13139794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文