2014-06-15 52 views
10

Jersey sürüm 1.18.1 (com.sun.jersey), Spring ve Java'yı kullanıyorum 8. Bir REST hizmetinde bir Java 8 Lambda ifadesi koyarsam, çöker. Lambda ifadesini kaldırırsam çalışır.Jersey ve Java 8 (Lambda ifadesi)

@Service 
@Path("/hello") 
public class Hello { 

    @GET 
    public String hello() { 
     new ArrayList<String>().stream().filter((str) -> str.length() > 0); 
     return "hello"; 
    } 

} 

Ben com.sun.jersey (1.18.1 versiyonu) kullanın.

Tam StackTrace:

SEVERE: Allocate exception for servlet jersey-serlvet java.lang.ArrayIndexOutOfBoundsException: 52264 
    at jersey.repackaged.org.objectweb.asm.ClassReader.readClass(ClassReader.java:1976) 
    at jersey.repackaged.org.objectweb.asm.ClassReader.accept(ClassReader.java:464) 
    at jersey.repackaged.org.objectweb.asm.ClassReader.accept(ClassReader.java:420) 
    at com.sun.jersey.spi.scanning.AnnotationScannerListener.onProcess(AnnotationScannerListener.java:138) 
    at com.sun.jersey.core.spi.scanning.uri.FileSchemeScanner$1.f(FileSchemeScanner.java:86) 
    at com.sun.jersey.core.util.Closing.f(Closing.java:71) 

nasıl düzeltilir söyle.

+1

[Muhtemelen REST Hizmeti İçinde Java 8 Lambda İfadesi Çalışmıyor] olası bir kopyası (http://stackoverflow.com/quest iyonlar/22917462/java-8-lambda-ifade-içinde-dinlenme-servis-çalışmayan) – andersschuller

+2

Evet, ama bu çözüm işe yaramıyor. Denedim. – Malahov

+0

@Malahov, bu yüzden Jersey 2.7+ ile denediniz ve aynı sorunu aldınız mı? – assylias

cevap

3

Benzer bir sorunumuz vardı. Ayrıca com.sun.jersey kullanımda.

En yeni sürüme geçişten sonra (19.1) tüm işler. Bu yüzden lütfen en yeni sürüme geçin.

10

Jersey 1.18, java 8 ile uyumlu değildir. 1.19'dan beri java 8 uyumluluğu eklediler.

Jersey 1.19 sürüm notlarına bir göz atın, jdk8 desteğini tanıtabilirsiniz.

https://github.com/jersey/jersey-1.x/releases/tag/1.19

1,19 etiketi alıntı:

sayesinde size yükseltmek zorunda Bunu düzeltmek için

JDK8

tarihinde Jersey 1.x uygulamaları çalıştırmak mümkün olacaktır @cowwoc için Jersey'den 1.19'a veya java 8'den 7'ye düşürme