2013-01-16 42 views
0

我一直在尝试将Google Drive中的读取数据合并到我的Android应用程序中。我开始遵循示例应用程序(DriveQuickstart - https://developers.google.com/drive/quickstart-android)的说明并遇到相同的错误。问题是,当我调用fileList.execute();在下面的代码中,调试器会抱怨BaseDexClassLoader抛出了ClassNotFoundException异常。如果我捕获这个异常并打印消息,它会告诉我参数字符串不应该为空。我确保我遵循了设定项目的所有方向,因为我确信这是我的环境出了问题。我玩过Java Build Path和这个项目的Android目标(目前设置为Android + Google API),但没有任何帮助。任何想法,将不胜感激!执行驱动器fileList.execute()会导致ClassNotFoundException

private void downloadFile() { 
    Thread t = new Thread(new Runnable() { 
     @Override 
     public void run() { 
     try { 
      Files.List fileList = service.files().list().setQ("title = 'tester'"); 
      FileList files = fileList.execute(); //This line causes an exception when executed. 
       ArrayList<File> myFiles = new ArrayList<File>(1); 
       myFiles.addAll(files.getItems()); 
       File file = myFiles.get(0); 
       InputStream inStream = downloadFile(service,file); 
       String docText = convertStreamToString(inStream); 
       Log.v("TAG", docText); 
      } 
      catch (UserRecoverableAuthIOException e) { 
      startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      System.out.println(e.toString()); 
     } 
     } 
    }); 
    t.start(); 
    } 

这里是从样本应用程序,遇到同样问题的方法:

private void saveFileToDrive() { 
Thread t = new Thread(new Runnable() { 
    @Override 
    public void run() { 
    try { 
     // File's binary content 
     java.io.File fileContent = new java.io.File(fileUri.getPath()); 
     FileContent mediaContent = new FileContent("image/jpeg", fileContent); 

     // File's metadata. 
     File body = new File(); 
     body.setTitle(fileContent.getName()); 
     body.setMimeType("image/jpeg"); 

     File file = service.files().insert(body, mediaContent).execute(); //Same exception encountered 
     if (file != null) { 
     showToast("Photo uploaded: " + file.getTitle()); 
     startCameraIntent(); 
     } 
    } catch (UserRecoverableAuthIOException e) { 
     startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 
}); 
t.start(); 

}

+1

您是否试过按照视频教程? ClassNotFoundException正在抛出,因为有些罐子丢失了 –

+0

是的,我观看了视频教程,并且我多次重新创建了该项目,只是出现了相同的错误,即使是示例项目也是如此。我认为它在Windows7机器上工作,但我无法避免在这台XP机器上出现这种异常。 – birdman

+0

如果您正在使用模拟器,我还建议您使用真实设备再试一次 –

回答

0

使用鸟人自己的解决方案,我得到了,我增加了额外的抓的部分(异常e)也工作。尽管它可能只是一个半解决方案。

更新:我发现驱动器快速启动应用程序工作,如果我挂了线程的错误只是吞下。我注意到,该应用程序正在运行,而不是调试。我在引起麻烦的行后添加了一个额外的“catch”,现在我可以调试代码并且工作正常。对我来说这似乎很奇怪,尽管这种异常似乎发生了,而且必须被忽略。 - birdman 1月23日20:06

0

从Eclipse菜单中选择Project> Properties> Java Build Path> Libraries。

您是否试过在[java build path]的[订单和导出]上检查Android私有库。

或者更新到最新的android sdk和google api版本?

相关问题