java – IndexOutOfBounds,索引14,大小16.如何?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – IndexOutOfBounds,索引14,大小16.如何?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3509字,纯文字阅读大概需要6分钟。
内容图文
![java – IndexOutOfBounds,索引14,大小16.如何?](/upload/InfoBanner/zyjiaocheng/748/e014ddc137614ba3bd5e5aa65ffafe85.jpg)
如果堆栈跟踪显示它实际处于边界内,那么索引如何超出界限?虽然上下文可能并不重要,但我们正在为Netbeans平台上的IDE开发一个Lua解析器/ VM,并且这种情况不断增加.怎么会这样?一些奇怪的并发问题?提前感谢任何见解.
java.lang.IndexOutOfBoundsException: Index: 14, Size: 16
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at org.netbeans.lib.lexer.BatchTokenList.existingToken(BatchTokenList.java:197)
at org.netbeans.lib.lexer.BatchTokenList.tokenOffset(BatchTokenList.java:150)
at org.netbeans.api.lexer.TokenSequence.offset(TokenSequence.java:256)
at com.MYDevelopers.LuaSupportCompiler.TokenManager.getTokenStart(TokenManager.java:230)
at com.MYDevelopers.LuaSupportCompiler.CompilationUnit.getCurrentLocation(CompilationUnit.java:459)
at com.MYDevelopers.LuaSupportCompiler.CompilationUnit.expressionImp(CompilationUnit.java:654)
at com.MYDevelopers.LuaSupportCompiler.CompilationUnit.expression(CompilationUnit.java:647)
at com.MYDevelopers.LuaSupportCompiler.CompilationUnit.RHSexpression(CompilationUnit.java:643)
at com.MYDevelopers.LuaSupportCompiler.CompilationUnit.chunk(CompilationUnit.java:1004)
at com.MYDevelopers.LuaSupportCompiler.CompilationUnit.compile(CompilationUnit.java:164)
at com.MYDevelopers.LuaSupportCompiler.CompilationUnit.compileIfRequired(CompilationUnit.java:148)
at com.MYDevelopers.LuaSupport.LuaProject.CompilationManagers.SourcesManager.compile(SourcesManager.java:222)
at com.MYDevelopers.LuaSupport.LuaProject.CompilationManagers.SourcesManager.compileAndEvaluateIfRequired(SourcesManager.java:210)
at com.MYDevelopers.LuaSupport.LuaProject.CompilationManagers.SourcesManager.addSourceManager(SourcesManager.java:113)
at com.MYDevelopers.LuaSupport.LuaProject.CompilationManagers.SourcesManager.addDirectory(SourcesManager.java:106)
at com.MYDevelopers.LuaSupport.LuaProject.CompilationManagers.SourcesManager.addBootDirectory(SourcesManager.java:80)
at com.MYDevelopers.LuaSupport.LuaProject.CompilationManagers.SourcesManager.addBaseLibraries(SourcesManager.java:72)
at com.MYDevelopers.LuaSupport.LuaProject.CompilationManagers.SourcesManager.<init>(SourcesManager.java:47)
at com.MYDevelopers.LuaSupport.LuaProject.CompilationManagers.GlobalCompilationManager.addProjectDirectory(GlobalCompilationManager.java:76)
at com.MYDevelopers.LuaSupport.LuaProject.LuaProject.getSourcesManager(LuaProject.java:309)
at com.MYDevelopers.LuaSupport.LuaProject.LuaProject$ProjectOpenHookImpl.projectOpened(LuaProject.java:599)
at org.netbeans.spi.project.ui.ProjectOpenedHook$1.projectOpened(ProjectOpenedHook.java:84)
[catch] at org.netbeans.modules.project.ui.OpenProjectList.notifyOpened(OpenProjectList.java:1138)
at org.netbeans.modules.project.ui.OpenProjectList.access$1600(OpenProjectList.java:134)
at org.netbeans.modules.project.ui.OpenProjectList$LoadOpenProjects.loadOnBackground(OpenProjectList.java:434)
at org.netbeans.modules.project.ui.OpenProjectList$LoadOpenProjects.run(OpenProjectList.java:312)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1452)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2032)
解决方法:
通过读取ArrayList的源代码,您可以看到rangeCheck实现为
private void rangeCheck(int index) {
if (index >= size)
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}
所以我的猜测只是去并发.抛出此异常时,没有其他明显的方法可以使用较小的索引.
在某种情况下,在抛出异常之后,大小会发生变化
>您尝试从列表中检索超出边界的项目
>同时另一个线程正在添加另一个元素,因此在抛出异常时大小会超过大小
>最终呈现异常
内容总结
以上是互联网集市为您收集整理的java – IndexOutOfBounds,索引14,大小16.如何?全部内容,希望文章能够帮你解决java – IndexOutOfBounds,索引14,大小16.如何?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。