簡體   English   中英

Glassfish服務器不適用於JDK 8

[英]Glassfish server does not work with JDK 8

我在使用NetBeans的web項目中使用帶有lambda的jdk 8,但是當它部署到glassfish時它會向我顯示以下錯誤:

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

這是由包含lambda表達式的代碼行引起的。

我嘗試更改glassfish設置以使用jdk 8,但我沒有讓它工作。

有沒有辦法使它工作?

我已經觀察到使用GlassFish 4結合JDK 8的各種奇怪行為。似乎是這樣的情況,當使用Java 1.8中引入的新語法時,使用新功能的類將在啟動期間觸發ArrayIndexOutOfBoundsException ,讀取類似這樣的內容:

   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不支持JDK 1.8這一事實之外,Java本身似乎每次都試圖構建我的項目時都會崩潰,而我的JavaFX應用程序有時會出現問題,而且他制作的各種組件非常多。太。 所以生產代碼肯定會暫時不再升級到Java 1.8。

更新

我也遇到過EclipseLink 2.5.2-M1的嚴重問題。 我的一個實體類在Java 1.7中完美地工作,然后我在其中添加了一些簡潔的JDK 8語法。 之后,EclipseLink拒絕讓實體類成為JPA關系的目標。 EclipseLink表示實體類是“非實體”類型。 一旦我將JDK 8糖重寫為傳統1.7代碼,所有工作都再次正常。

更新2014-07-03

GlassFish 4.0.1-b05只有Java 1.8代碼的一個問題:JPA實體類。 這意味着EclipseLink存在問題。 但我可以確認Java 1.8代碼在EJB:s和CDI托管bean中有效。

我嘗試使用JDK8運行GlassFish,但也無法啟動。

提交了一份JIRA問題GLASSFISH-19263用於跟蹤目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM