O servidor Glassfish não funciona com o JDK 8

Estou usando o jdk 8 com o lambda em um projeto da web com o NetBeans, mas quando o implantar no glassfish ele me mostra este erro:

java.lang.RuntimeException: Uncompilable source code - Erroneous tree type:  

Isso é causado por linhas de código que incluem a expressão lambda.

Eu tentei mudar as configurações do glassfish para trabalhar com o jdk 8, mas não consegui que funcionasse.

Existe alguma maneira de fazer isso funcionar?

Eu observei todos os tipos de comportamentos estranhos usando o GlassFish 4 combinado com o JDK 8. Parece que quando usamos a nova syntax introduzida no Java 1.8, a class que usa os novos resources irá triggersr um ArrayIndexOutOfBoundsException durante a boot que lê algo como isto :

  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) 

Às vezes a class sendo examinada pelo GlassFish sobrevive ao “crash” e pode ser usada corretamente dentro do aplicativo, às vezes não. Às vezes, a class com falha impede que o aplicativo seja implantado. GlassFish reclama que o bean do tipo procurado não pode ser encontrado ou instanciado. Às vezes, a class que falha não impede que a implantação seja bem-sucedida, mas a class falha de um jeito ou de outro quando é usada. Por exemplo, os resources injetados no bean falharão e seu aplicativo inevitavelmente lançará um NullPointerException .

Exceto pelo fato de que o GlassFish tem um suporte inexistente do JDK 1.8, o próprio Java parece falhar para mim toda vez que tento construir meu projeto e um aplicativo JavaFX meu às vezes escurece e vários componentes dos quais ele é feito é extremamente bugs também. Portanto, o código de produção deve ficar longe da atualização para o Java 1.8 por um tempo.

Atualizar

Eu também estou tendo sérios problemas com o EclipseLink 2.5.2-M1 . Uma class de entidade minha funcionou perfeitamente no Java 1.7, depois veio a hora em que adicionei uma syntax do JDK 8. Depois disso, o EclipseLink recusou-se a permitir que a class da entidade fosse um destino para um relacionamento JPA. O EclipseLink disse que a class de entidade era do tipo “não-entidade”. Assim que eu reescrevi o açúcar do JDK 8 no código legacy 1.7, tudo funcionou muito bem novamente.

Atualização 2014-07-03

O GlassFish 4.0.1-b05 tem apenas um problema com o código Java 1.8: classs de entidade JPA. O que significa que é o EclipseLink que está tendo os problemas. Mas posso confirmar que o código Java 1.8 funciona em beans gerenciados por EJB: s e CDI.

Eu tentei executar o GlassFish com o JDK8 e não pude começar também.

Arquivado um assunto JIRA GLASSFISH-19263 para fins de rastreamento.