2017-05-18 108 views
1

我已經重寫下面的代碼爲lambda表達式時:GlassFish的部署失敗部署lambda函數

boolean updateAble = false; 
for (Field field : fields) { 
    if (field.isAnnotationPresent(Updateable.class)) { 
     updateAble = true; 
     break; 
    } 
} 
if (udpateAble) {...} 

我希望把它改寫爲:

boolean updateAble = fields.stream().anyMatch(field -> field.isAnnotationPresent(Updateable.class)); 
if (udpateAble) {...} 

此代碼編譯,似乎是準備好但部署失敗,但以下例外:

2017-05-18T12:06:26.427+0200] [glassfish 4.0] [SEVERE] [NCLS-CORE-00026] [javax.enterprise.system.core] [tid: _ThreadID=36 _ThreadName=admin-listener(5)] [timeMillis: 1495101986427] [levelValue: 1000] [[ 
    Exception during lifecycle processing 
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ArrayIndexOutOfBoundsException 
     at com.sun.enterprise.web.WebApplication.start(WebApplication.java:168) 
     at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) 
     at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291) 
     at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352) 
     at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:497) 
     at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) 
     at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491) 
     at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527) 
     at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.Subject.doAs(Subject.java:360) 
     at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522) 
     at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546) 
     at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423) 
     at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108) 
     at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762) 
     at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674) 
     at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534) 
     at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224) 
     at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297) 
     at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246) 
     at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) 
     at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) 
     at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) 
     at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
     at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) 
     at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) 
     at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) 
     at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) 
     at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
     at org.glassfish.grizzly.portunif.PUFilter.handleRead(PUFilter.java:231) 
     at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
     at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) 
     at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) 
     at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) 
     at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) 
     at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
     at org.glassfish.grizzly.portunif.PUFilter.handleRead(PUFilter.java:231) 
     at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
     at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) 
     at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) 
     at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) 
     at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) 
     at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
     at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) 
     at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) 
     at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) 
     at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) 
     at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) 
     at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) 
     at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) 
     at java.lang.Thread.run(Thread.java:748) 

是否有任何w唉要解決這個問題?我知道使用lambda表達式並不是真的必要,儘管有可能使用它們會很好。我已經在Google上搜索並搜索了,但我還沒有找到解決方案。

回答

0

這是討論無數次的不同論壇(包括這裏 - 但很奇怪,我無法找到它)。你看到的ArrayIndexOutOfBoundsException確實是因爲缺乏對glassfish的java-8的支持。有兩件事你可以在這裏嘗試 - 獲得你可以得到的最新版本,並祈禱它可以工作;只需注意Oracle不主動支持此服務器 - 它們具有weblogic ...

或切換到paraya

據我所知,一般玻璃魚會慢慢死去(如果沒有死的話)