You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VsCode运行Payara Micro时executor服务任务抛出IndexOutOfBoundsException

VS Code Payara扩展启动Payara Micro索引越界异常修复方案

异常现象

通过VS Code Payara扩展启动Java 8环境下的GlassFish项目时,payara-executor-service-task线程抛出索引越界异常,异常日志如下:

[2021-12-02T08:11:06.092-0400] [] [INFO] [NCLS-JMX-00006] [javax.enterprise.system.jmx] [tid: _ThreadID=88 _ThreadName=Thread-9] [timeMillis: 1638447066092] [levelValue: 800] JMXStartupService has disabled JMXConnector system

[2021-12-02T08:11:32.329-0400] [] [SEVERE] [] [javax.enterprise.system.tools.deployment.common] [tid: _ThreadID=35 _ThreadName=payara-executor-service-task] [timeMillis: 1638447092329] [levelValue: 1000] [[
  Exception while visiting jersey/repackaged/com/google/common/collect/AbstractMapBasedMultimap$RandomAccessWrappedList.class of size 2105
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
    at java.util.ArrayList.rangeCheck(ArrayList.java:657)
    at java.util.ArrayList.get(ArrayList.java:433)
    at org.glassfish.hk2.classmodel.reflect.impl.MethodModelImpl.getParameter(MethodModelImpl.java:104)
    at org.glassfish.hk2.classmodel.reflect.impl.ModelClassVisitor$ModelMethodVisitor.visitParameterAnnotation(ModelClassVisitor.java:392)
    at org.objectweb.asm.ClassReader.readParameterAnnotations(ClassReader.java:2932)
    at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1467)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:717)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:401)
    at org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:336)
    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:321)
    at org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:44)
    at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:280)
    at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:269)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
]]

[2021-12-02T08:11:32.460-0400] [] [SEVERE] [] [javax.enterprise.system.tools.deployment.common] [tid: _ThreadID=35 _ThreadName=payara-executor-service-task] [timeMillis: 1638447092460] [levelValue: 1000] [[
  Exception while visiting jersey/repackaged/com/google/common/collect/AbstractMapBasedMultimap$WrappedCollection.class of size 6672
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
    at java.util.ArrayList.rangeCheck(ArrayList.java:657)
    at java.util.ArrayList.get(ArrayList.java:433)
    at org.glassfish.hk2.classmodel.reflect.impl.MethodModelImpl.getParameter(MethodModelImpl.java:104)
    at org.glassfish.hk2.classmodel.reflect.impl.ModelClassVisitor$ModelMethodVisitor.visitParameterAnnotation(ModelClassVisitor.java:392)
    at org.objectweb.asm.ClassReader.readParameterAnnotations(ClassReader.java:2932)
    at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1467)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:717)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:401)
    at org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:336)
    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:321)
    at org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:44)
    at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:280)
    at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:269)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
]]

[2021-12-02T08:11:32.495-0400] [] [SEVERE] [] [javax.enterprise.system.tools.deployment.common] [tid: _ThreadID=35 _ThreadName=payara-executor-service-task] [timeMillis: 1638447092495] [levelValue: 1000] [[
  Exception while visiting jersey/repackaged/com/google/common/collect/AbstractMapBasedMultimap$WrappedList.class of size 5708
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
    at java.util.ArrayList.rangeCheck(ArrayList.java:657)
    at java.util.ArrayList.get(ArrayList.java:433)
    at org.glassfish.hk2.classmodel.reflect.impl.MethodModelImpl.getParameter(MethodModelImpl.java:104)
    at org.glassfish.hk2.classmodel.reflect.impl.ModelClassVisitor$ModelMethodVisitor.visitParameterAnnotation(ModelClassVisitor.java:392)
    at org.objectweb.asm.ClassReader.readParameterAnnotations(ClassReader.java:2932)
    at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1467)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:717)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:401)
    at org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:336)
    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:321)
    at org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:44)
    at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:280)
    at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:269)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
]]

[2021-12-02T08:11:32.503-0400] [] [SEVERE] [] [javax.enterprise.system.tools.deployment.common] [tid: _ThreadID=35 _ThreadName=payara-executor-service-task] [timeMillis: 1638447092503] [levelValue: 1000] [[
  Exception while visiting jersey/repackaged/com/google/common/collect/AbstractMapBasedMultimap$WrappedSortedSet.class of size 4003
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
    at java.util.ArrayList.rangeCheck(ArrayList.java:657)
    at java.util.ArrayList.get(ArrayList.java:433)
    at org.glassfish.hk2.classmodel.reflect.impl.MethodModelImpl.getParameter(MethodModelImpl.java:104)
    at org.glassfish.hk2.classmodel.reflect.impl.ModelClassVisitor$ModelMethodVisitor.visitParameterAnnotation(ModelClassVisitor.java:392)
    at org.objectweb.asm.ClassReader.readParameterAnnotations(ClassReader.java:2932)
    at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1467)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:717)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:401)
    at org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:336)
    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:321)
    at org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:44)
    at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:280)
    at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:269)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
]]

异常抛出后Payara Micro实例仍可正常启动,启动成功日志如下:

[2021-12-02T08:12:23.124-0400] [] [INFO] [] [PayaraMicro] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1638447143124] [levelValue: 800] 
Payara Micro URLs:

[2021-12-02T08:12:23.127-0400] [] [INFO] [] [PayaraMicro] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1638447143127] [levelValue: 800] Payara Micro  5.2021.5 #badassmicrofish (build 770) ready in 111,507 (ms)

根因说明

问题核心是VS Code Payara扩展默认继承全局JAVA_HOME/JDK_HOME环境变量启动服务,而VS Code Java扩展要求全局JAVA_HOME配置为JDK11,和项目所需的JDK8运行环境存在字节码解析兼容问题,导致HK2类反射工具解析JDK8编译的Guava类字节码时触发索引越界。

修复方案

  • 配置Payara扩展独立JDK路径:打开VS Code设置,搜索Payara › Jdk: Path配置项,将值设置为项目使用的JDK8本地路径,扩展启动Payara Micro时会优先使用该配置的JDK,规避全局JDK版本冲突问题。
  • 升级相关组件版本:将VS Code Payara扩展升级到最新稳定版,同时将Payara Micro版本升级到5.2022.1及以上,官方已修复该类HK2字节码解析越界漏洞。
  • 临时调试规避:直接使用Maven命令mvn fish.payara.maven.plugins:payara-micro-maven-plugin:start -X启动Payara Micro,启动时添加--debug 5005参数开启调试端口,再在VS Code中新建Remote JVM Debug配置,端口设置为5005后attach到运行实例即可正常调试,完全绕开扩展启动逻辑。

内容的提问来源于stack exchange,提问作者Rubén Vásquez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:54:10