【问题标题】:Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException in my JApplet我的 JApplet 中的线程“AWT-EventQueue-1”java.lang.NullPointerException 中的异常
【发布时间】:2012-05-11 06:06:22
【问题描述】:

我在尝试修复这段代码时遇到了一个大问题,我不断收到一个大错误:

Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at com.allcare.arfile.CloudStoreInfo.getStoreInfoFromProvider(CloudStoreInfo.java:62)
at com.allcare.arfile.ArFileJApplet.listBlobStoreContents(ArFileJApplet.java:959)
at com.allcare.arfile.ArFileJApplet.uploadFile(ArFileJApplet.java:938)
at com.allcare.arfile.ArFileJApplet.sendCloud_buttonActionPerformed(ArFileJApplet.java:807)
at com.allcare.arfile.ArFileJApplet.access$1400(ArFileJApplet.java:26)
at com.allcare.arfile.ArFileJApplet$14.actionPerformed(ArFileJApplet.java:445)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

我认为问题出在我的作业上。我知道我得到的列表中至少有 1 个完整的部分变量。我已经尝试打印出 elements 变量的每个元素并且它们都在那里(但我必须在开始分配之前这样做,否则它不会到达函数),但它根本不会进入我的 print 语句(这也不是原因,我试过评论它)。我只是找不到究竟是什么空:

public void getStoreInfoFromProvider(BlobStore blobStore)
{
    ListContainerOptions listOptions = new ListContainerOptions();
    String temp = blobStore.list("", listOptions.recursive()).toString(); // returns a string containing all info of the filesystem on the cloud

    // remove the [ and ] characters as well as split whenever encounters [t
    temp = temp.replaceFirst("\\[\\[", "");
    temp = temp.replaceFirst("\\]\\]", "");
    String[] parts = temp.split("\\[t"); 

    for (int x = 0; x < 1; x++)
    {
        String[] elements = parts[x].split(", ");

        System.out.println(elements.length);
        System.out.println(elements[x]);

// this line below is where the code breaks, if i comment it out, then the next line breaks and so on and so forth
        type[x] = elements[0];
        providerId[x] = elements[1];
        name[x] = elements[2];
        location[x] = elements[3];
        scope[x] = elements[4];
        description[x] = elements[5];
        parent[x] = elements[6];
        isoCodes[x] = elements[7];
        metadata[x] = elements[8];
        uri[x] = elements[9];
        userMetadata[x] = elements[10];

        printSingleCloudStoreInfo(x);
    }
}

任何帮助或建议将不胜感激!

【问题讨论】:

  • NullPointerException at ..(CloudStoreInfo.java:62) 第 62 行是哪一行?为了尽快获得更好的帮助,请发帖SSCCE

标签: java netbeans applet nullpointerexception japplet


【解决方案1】:

听说过简化的 for 循环吗?好吧,有理由称它为简化...

public void getStoreInfoFromProvider (BlobStore blobStore)
{
    ListContainerOptions listOptions = new ListContainerOptions ();
    // returns a string containing all info of the filesystem on the cloud
    String temp = blobStore.list ("", listOptions.recursive ()).toString (); 

    temp = temp.replaceFirst("\\[\\[", "");
    temp = temp.replaceFirst("\\]\\]", "");
    String[] parts = temp.split("\\[t"); 

    for (String part: parts) 
    {
        String[] elements = part.split(", ");
        System.out.println(elements.length);
        // ...

我只是在猜测,第 62 行在哪里。您应该用评论标记它或通过引用它以某种方式描述它。

更新:

由于现在标记了第 62 行:

如果 type 设置为 null,它不会被初始化,而是 null。你必须用你需要的大小来初始化它——例如,因为它是一个字符串数组:String [] type = new String[2];。如果不初始化,就没有预留空间来存储类型[0];

【讨论】:

  • 我不使用简化的 for 循环的原因是我只想让代码在单个案例中工作。一旦我得到一个工作,那么我就会转向使用适当的 for 循环。我想我可能会在旁边使用字符串列表进行测试,看看是否可以解决问题,但仍然有助于理解这里出了什么问题
  • 好的,刚刚使用 list 实现,它立即运行良好.... face palm 如果你能弄清楚为什么会发生这种情况,这样它就不会再发生了,我们将不胜感激,但是在这个阶段,我认为从现在开始我会坚持使用列表
  • @MatthewPigram:你现在在哪里使用 List?那么,从您标记的行中,抛出错误 - 上面的两行打印什么?长度 > 0?所以输入,数组为空。初始化数组和初始化它的元素是两件不同的事情。我打赌类型为空。在您发表评论之前尝试if (type == null) System.err.println ("type is null");
  • 我正在打印零件的长度,以查看它是否获得了正确的值,并且实际上放入了东西。类型被初始化为null,但是我将它设置为循环中的元素[0],可能是因为我将整个字符串数组初始化为null而不是单独初始化为数组中的每个元素
  • 如果 type 设置为 null,它不会被初始化,而是 null。你必须用你需要的大小来初始化它——例如,因为它是一个字符串数组:String [] type = new String[2];。如果不初始化,就没有空间预留存储类型[0];
猜你喜欢
  • 2011-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多