Exception in continueinnewthreadd "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 报错

BeanCreationException, java.lang.ArrayIndexOutOfBoundsException: 1875 while installing jasper reports server | Jaspersoft Community查看:30160|回复:27
中级工程师
listvie刷新,有时候 报java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
大概思路是
& &从后台获取数据
& && && && &&&JSONObject jsonObj = (JSONObject) msg.getData(HttpNetwork.RESULT);
&&从json提取数据给一个暂存list,这个list是方法中局部变量
& && &for (int i = 0; i & array.length(); i++) {
& && && && && & JSONObject userObj = ((JSONObject) array.opt(i));
& && && && && & ......
& && && && && & list.add(user);
& && && &}
& & //数据源清空以前的数据
& && &this.list.clear();
& &&&this.list.addAll(list);&&
& & 发送异步消息
& & msgHandle.obtainMessage(ListBase.MSG_SUCCESS).sendToTarget();
& && && && && & Log.e(&sns&, &发送通知到activity&);
//处理消息
& &&&switch (msg.what) {
& && &&&case UserList.MSG_SUCCESS:
& && && && &Log.i(&sns&, &activity 收到成功消息&);
& && && && &listItems = listBase.getList();
& && && && &Log.i(&sns&, &listItems消息条数:& + listItems.size() + & & + listViewAdapter.listItems.size());
& && && && &listViewAdapter.notifyDataSetChanged();
& && && && &
这个异常有时候会有,有时候正常,求大神解决,搞了一天还解决问题,log中没有说代码中哪个地方报出该异常,只是
说arraylist越界,java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
本帖最后由 四海轩 于
20:14 编辑
助理工程师
引用:原帖由 四海轩 于
22:40 发表
listvie刷新,有时候 报java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
大概思路是
& &从后台获取数据
& && && && &&&JSONObject jsonObj = (JSONObject) msg.getData(HttpNetwork.RESULT);
&&从js ... 看不出来,不过应该是这样的问题。
某个list是空的,却调用了list[0], 取它的元素。
有时发生异常,有时不发生。说明有时这个list取得了数据,不为空,就正常了;有时这个list没有取得数据,为空,就异常了。
解决办法,操作时,加个判断吧。不为空时才处理。
本帖最后由 stefan58 于
23:18 编辑
中级工程师
引用:原帖由 stefan58 于
23:13 发表
看不出来,不过应该是这样的问题。
某个list是空的,却调用了list[0], 取它的元素。
有时发生异常,有时不发生。说明有时这个list取得了数据,不为空,就正常了;有时这个list没有取得数据,为空,就异常了。
解决办法,操作时,加个判 ... 我没还没发现在哪个地方调用list.get(0)?呵呵。我在适配器也在家判断的。看listview机制在那个地方调用没有!
本帖最后由 四海轩 于
23:30 编辑
资深技术经理
引用:原帖由 四海轩 于
22:40 发表
listvie刷新,有时候 报java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
大概思路是
& &从后台获取数据
& && && && &&&JSONObject jsonObj = (JSONObject) msg.getData(HttpNetwork.RESULT);
&&从js ... 报异常的时候应该会抛出当前异常的堆栈信息,就是哪个类的哪一行出现异常,你可以看到么?
中级工程师
引用:原帖由 rongwei84n 于
09:21 发表
报异常的时候应该会抛出当前异常的堆栈信息,就是哪个类的哪一行出现异常,你可以看到么? 04-25 08:25:34.766: W/dalvikvm-sfm(11511): threadid=1: thread exiting with uncaught exception (group=0x)
04-25 08:25:34.956: E/AndroidRuntime(11511): FATAL EXCEPTION: main
04-25 08:25:34.956: E/AndroidRuntime(11511): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
04-25 08:25:34.956: E/AndroidRuntime(11511):& && && &at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
04-25 08:25:34.956: E/AndroidRuntime(11511):& && && &at java.util.ArrayList.get(ArrayList.java:311)
04-25 08:25:34.956: E/AndroidRuntime(11511):& && && &at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:225)
04-25 08:25:34.956: E/AndroidRuntime(11511):& && && &at android.widget.AbsListView.obtainView(AbsListView.java:1409)
04-25 08:25:34.956: E/AndroidRuntime(11511):& && && &at android.widget.ListView.measureHeightOfChildren(ListView.java:1264)
本帖最后由 四海轩 于
10:18 编辑
资深技术经理
引用:原帖由 四海轩 于
22:40 发表
listvie刷新,有时候 报java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
大概思路是
& &从后台获取数据
& && && && &&&JSONObject jsonObj = (JSONObject) msg.getData(HttpNetwork.RESULT);
&&从js ... 感觉这样写是不是 有点问题呢,你是不是在后台获取到数据,然后把数据放到list里面,再通知主线程来处理这个list?然后后台在某种机制下,再去获取数据?
那你怎么保证主线程能够在 后台再次修改这个list之前把数据消费掉呢?
打个比方说,你后台第一个把数据给了list,然后让主线程去显示;接着后台继续获取数据。那也许有可能主线程还是没刷新完,后台又把新数据给过来了。
这也许就会出现问题了。
中级工程师
引用:原帖由 rongwei84n 于
12:04 发表
感觉这样写是不是 有点问题呢,你是不是在后台获取到数据,然后把数据放到list里面,再通知主线程来处理这个list?然后后台在某种机制下,再去获取数据?
那你怎么保证主线程能够在 后台再次修改这个list之前把数据消费掉呢?
打 ... 没有接着去后台获取数据。。。你觉得上面那个语句再次从后台获取数据了?
本帖最后由 四海轩 于
12:21 编辑
资深技术经理
引用:原帖由 四海轩 于
12:19 发表
没有接着去后台获取数据。。。你觉得上面那个语句再次从后台获取数据了? 看出现异常的这个地方,红色部分 HeaderViewListAdapter.java 第225行
public View getView(int position, View convertView, ViewGroup parent) {
& && &&&// Header (negative positions will throw an ArrayIndexOutOfBoundsException)
& && &&&int numHeaders = getHeadersCount();
& && &&&if (position & numHeaders) {
& && && && &return mHeaderViewInfos.get(position).
& && &&&// Adapter
& && &&&final int adjPosition = position - numH
& && &&&int adapterCount = 0;
& && &&&if (mAdapter != null) {
& && && && &adapterCount = mAdapter.getCount();
& && && && &if (adjPosition & adapterCount) {
& && && && && & return mAdapter.getView(adjPosition, convertView, parent);
& && && && &}
& && &&&// Footer (off-limits positions will throw an ArrayIndexOutOfBoundsException)
& && &&&return mFooterViewInfos.get(adjPosition - adapterCount).
这里会调用mAdapter.getCount();和当前的位置相比较。
我们应该要调用return mAdapter.getView(adjPosition, convertView, parent);的,但是现在调用下面的 逻辑
中级工程师
引用:原帖由 rongwei84n 于
14:23 发表
看出现异常的这个地方,红色部分 HeaderViewListAdapter.java 第225行
public View getView(int position, View convertView, ViewGroup parent) {
& && &&&// Header (negative positions will throw an ArrayIndex ... 但是,我们没有设置header
资深技术经理
引用:原帖由 四海轩 于
15:22 发表
但是,我们没有设置header 你的是一个apk吗?要不把应用程序代码发上来看看把?
中级工程师
引用:原帖由 rongwei84n 于
15:37 发表
你的是一个apk吗?要不把应用程序代码发上来看看把? 是公司的东东,有很多模块,贴上来有很多!
资深技术经理
引用:原帖由 四海轩 于
22:40 发表
listvie刷新,有时候 报java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
大概思路是
& &从后台获取数据
& && && && &&&JSONObject jsonObj = (JSONObject) msg.getData(HttpNetwork.RESULT);
&&从js ... 你在这里面重新new&&adapter 然后 setAdapter()吧,试试
case UserList.MSG_SUCCESS:
& && && && &Log.i(&sns&, &activity 收到成功消息&);
& && && && &listItems = listBase.getList();
& && && && &Log.i(&sns&, &listItems消息条数:& + listItems.size() + & & + listViewAdapter.listItems.size());
& && && && &listViewAdapter.notifyDataSetChanged();
& && && && &
中级工程师
引用:原帖由 rongwei84n 于
16:03 发表
你在这里面重新new&&adapter 然后 setAdapter()吧,试试
case UserList.MSG_SUCCESS:
& && && && &Log.i(&sns&, &activity 收到成功消息&);
& && && && &listItems = listBase.getList();
& && && && &Log.i(&sns&,&&... 不行,我也尝试过!
资深技术经理
引用:原帖由 四海轩 于
16:08 发表
不行,我也尝试过! 如果不是共用一个list呢,就是每次都后台返回你封装的newList,不要赋值给原来的list,用message传到主线程来,然后new adapter, setAdapter()不知道可不可以。
中级工程师
引用:原帖由 rongwei84n 于
16:14 发表
如果不是共用一个list呢,就是每次都后台返回你封装的newList,不要赋值给原来的list,用message传到主线程来,然后new adapter, setAdapter()不知道可不可以。 这个好像有点困难,这样代码结构要调整,我去要改接口,因为都是做的接口太通用了。。。
listView 是动态加载数据,即便你已经为listView配置了Adapter 但是那些不能显示的条目仍然是空的,也就是说,当你调用那些没有显示的条目的时候就会出现空指针异常。
资深技术经理
引用:原帖由 dengzhihua_happ 于
17:21 发表
listView 是动态加载数据,即便你已经为listView配置了Adapter 但是那些不能显示的条目仍然是空的,也就是说,当你调用那些没有显示的条目的时候就会出现空指针异常。 ... 这个,楼上可以说的再详细点么? 不能显示的条目是什么意思呢?
中级工程师
引用:原帖由 rongwei84n 于
09:00 发表
这个,楼上可以说的再详细点么? 不能显示的条目是什么意思呢? 这问题我解决了,只不过程序经过框架处理后,我做了框架的反动作,然后重新给数据源一个新的引用,重新给适配器可以了,这样不用改别人的写的框架了。。。笨办法。。
有志者事竟成!
本帖最后由 四海轩 于
17:35 编辑
资深技术经理
引用:原帖由 四海轩 于
17:34 发表
这问题我解决了,只不过程序经过框架处理后,我做了框架的反动作,然后重新给数据源一个新的引用,重新给适配器可以了,这样不用改别人的写的框架了。。。笨办法。。 ... :lol1 呵呵,也就是说,是要重新new adapter,然后setAdapter()?
中级工程师
引用:原帖由 rongwei84n 于
18:10 发表
:lol1 呵呵,也就是说,是要重新new adapter,然后setAdapter()? 嗯,没有办法的办法。提示错误Exception in thread &AWT-EventQueue-0& java.lang.ArrayIndexOutOfBoundsException: 0 &= 0_百度知道
提示错误Exception in thread &AWT-EventQueue-0& java.lang.ArrayIndexOutOfBoundsException: 0 &= 0
代码如下,小白不知道是哪出了问题?希望有大神能够指点
row=t.getSelectedRow();
String temp=(String) t.getValueAt(row, column);
sql=&select * from BISHE2015.PURCHASE_TRACE where t='&+temp+&'&;
Connection conn=
...
我有更好的答案
建议打断点进行调试,能不能截个全面详细点的图呢,很高兴回答你的问题题主你好。你的代码不是很全,主要是获取连接的代码,你这个异常是数组下标越界的问题
您好!非常感谢您能回答我的问题,不好意思有别的事没能及时回复,我接触编程时间不是很长,这段代码是我准备给一个按钮赋予删除功能的,复制的其他人的代码改了改,但这段代码是这个按钮actionperform的全部代码同时报错的还有at java.util.Vector.elementAt(Vector.java:474)等等一系列问题,我有点不知所措该提供哪段代码,还请能指出需要哪些代码,前面声明?
题主你好,你这个类是单独写的吗?如果是的话,不如告诉我你的联系方式,然后你发给我,我给你改改。
实在抱歉一直有工作没能及时回复您,那我留我的qq号吧 ,等您方便的时候咱们联系一下,万分感谢!
采纳率:69%
来自团队:
为您推荐:
其他类似问题
awt的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。请教这个 java.lang.ArrayIndexOutOfBoundsException: 0 异常 - ITeye问答
代码如下:
public class Test {
public static void main(String[] args) {
final int num2 = Integer.parseInt(args[0]);
编译时,会报
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at test.Test.main(Test.java:7)
问题补充:其实各位回答的都不错,可是我只能选一个,确实不是编译时出错,是运行时报的错。
我有点思维定式了,我以为在用args参数的时候会在运行时等待输入!!
⊙﹏⊙b汗~
采纳的答案
引用编译时,会报
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at test.Test.main(Test.java:7)
首先说明:我在JDK1.6中编译时没问题的。
其次: 从你的堆栈可以看出,这是在运行时报的错。
最终的结论是: 运行时忘了加命令时参数了
应该这样运行:java& test.Test& 参数
这个args是在java Test 命令后面加的
必须提供了args才能够取的 否则为一个空的字符串数组
如果在Eclipse中的话请在(Open Run Dialog)代开的对话框中
对Test类运行的 Arguments参数填值& 用空格隔开
哥,你挺厉害的,你的输入参数啊,你用了主方法的参数,运行的时候是需要输入参数的。
呵呵,那肯定要报这错误的。因为你还未输入数据,所以args数组中还没值,你现在取它的第一值,那肯定是数组越界异常。
先判断:if(args.length!=0)
已解决问题
未解决问题Exception in thread &AWT-EventQueue-0& java.lang.NullPointerException
作者:用户
浏览:359 次
Exceptioninthread"AWT-EventQueue-0"java.lang.NullPointerExceptionatBoard.drawBrick(Board.java:109)at
问题描述Exceptioninthread"AWT-EventQueue-0"java.lang.NullPointerExceptionatBoard.drawBrick(Board.java:109)atBoard.paintComponent(Board.java:102)atjavax.swing.JComponent.paint(UnknownSource)atjavax.swing.JComponent.paintChildren(UnknownSource)atjavax.swing.JComponent.paint(UnknownSource)atjavax.swing.JComponent.paintChildren(UnknownSource)atjavax.swing.JComponent.paint(UnknownSource)atjavax.swing.JLayeredPane.paint(UnknownSource)atjavax.swing.JComponent.paintChildren(UnknownSource)atjavax.swing.JComponent.paintToOffscreen(UnknownSource)atjavax.swing.RepaintManager$PaintManager.paintDoubleBuffered(UnknownSource)atjavax.swing.RepaintManager$PaintManager.paint(UnknownSource)atjavax.swing.RepaintManager.paint(UnknownSource)atjavax.swing.JComponent.paint(UnknownSource)atjava.awt.GraphicsCallback$PaintCallback.run(UnknownSource)atsun.awt.SunGraphicsCallback.runOneComponent(UnknownSource)atsun.awt.SunGraphicsCallback.runComponents(UnknownSource)atjava.awt.Container.paint(UnknownSource)atjavax.swing.RepaintManager.paintDirtyRegions(UnknownSource)atjavax.swing.RepaintManager.paintDirtyRegions(UnknownSource)atjavax.swing.RepaintManager.seqPaintDirtyRegions(UnknownSource)atjavax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(UnknownSource)atjava.awt.event.InvocationEvent.dispatch(UnknownSource)atjava.awt.EventQueue.dispatchEvent(UnknownSource)atjava.awt.EventDispatchThread.pumpOneEventForFilters(UnknownSource)atjava.awt.EventDispatchThread.pumpEventsForFilter(UnknownSource)atjava.awt.EventDispatchThread.pumpEventsForHierarchy(UnknownSource)atjava.awt.EventDispatchThread.pumpEvents(UnknownSource)atjava.awt.EventDispatchThread.pumpEvents(UnknownSource)atjava.awt.EventDispatchThread.run(UnknownSource)Exceptioninthread"AWT-EventQueue-0"java.lang.NullPointerExceptionatBoard.drawBrick(Board.java:109)atBoard.paintComponent(Board.java:102)atjavax.swing.JComponent.paint(UnknownSource)atjavax.swing.JComponent.paintChildren(UnknownSource)atjavax.swing.JComponent.paint(UnknownSource)atjavax.swing.JComponent.paintChildren(UnknownSource)atjavax.swing.JComponent.paint(UnknownSource)atjavax.swing.JLayeredPane.paint(UnknownSource)atjavax.swing.JComponent.paintChildren(UnknownSource)atjavax.swing.JComponent.paintToOffscreen(UnknownSource)atjavax.swing.RepaintManager$PaintManager.paintDoubleBuffered(UnknownSource)atjavax.swing.RepaintManager$PaintManager.paint(UnknownSource)atjavax.swing.RepaintManager.paint(UnknownSource)atjavax.swing.JComponent.paint(UnknownSource)atjava.awt.GraphicsCallback$PaintCallback.run(UnknownSource)atsun.awt.SunGraphicsCallback.runOneComponent(UnknownSource)atsun.awt.SunGraphicsCallback.runComponents(UnknownSource)atjava.awt.Container.paint(UnknownSource)atjavax.swing.RepaintManager.paintDirtyRegions(UnknownSource)atjavax.swing.RepaintManager.paintDirtyRegions(UnknownSource)atjavax.swing.RepaintManager.seqPaintDirtyRegions(UnknownSource)atjavax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(UnknownSource)atjava.awt.event.InvocationEvent.dispatch(UnknownSource)atjava.awt.EventQueue.dispatchEvent(UnknownSource)atjava.awt.EventDispatchThread.pumpOneEventForFilters(UnknownSource)atjava.awt.EventDispatchThread.pumpEventsForFilter(UnknownSource)atjava.awt.EventDispatchThread.pumpEventsForHierarchy(UnknownSource)atjava.awt.EventDispatchThread.pumpEvents(UnknownSource)atjava.awt.EventDispatchThread.pumpEvents(UnknownSource)atjava.awt.EventDispatchThread.run(UnknownSource)解决方案解决方案二:atBoard.paintComponent(Board.java:102)atBoard.paintComponent(Board.java:102)看哪个类是自己写的,然后排错。以后注意发源码,同时附说明。解答完毕!解决方案三:java.lang.NullPointerException空指针了,肯定有地方时null.方法()了,仔细检查你的为null的对象解决方案四:我也是这个问题啊!
【云栖快讯】新手小白必看!编程语言系列讲座火爆进行中,与行业资深专家一起学习Python、C++、JavaScript、Java!从入门到进阶&&
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
40+云计算产品,6个月免费体验
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
云服务器9.9元/月,大学必备}

我要回帖

更多关于 in thread main 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信