java.lang.NullPointerException при записи байтового массива - PullRequest
0 голосов
/ 09 июня 2011

Я пытаюсь этот код в Java:

  try
  {
    String url = "http://url.com/file.ext";
    InputStream myInputStream = getClass().getResourceAsStream(url);
    ByteArrayOutputStream myByteArrayOutputStream = new ByteArrayOutputStream();
    byte[] arrayOfByte = new byte[1024];
    int i;
    while ((i = myInputStream.read(arrayOfByte)) != -1)
    {
      myByteArrayOutputStream.write(arrayOfByte, 0, i);
    }
  }
  catch (Exception e)
  {
      System.err.println(e);
      System.err.println(e.getMessage());
      System.err.println(e.getLocalizedMessage());
      System.err.println(e.getCause());
      System.err.println(Arrays.toString(e.getStackTrace()));
      e.printStackTrace();

  }

Прекрасно компилируется, но выдает исключение, это вывод консоли:

java.lang.NullPointerException
null
null
null
[myclass.init(myclass.java:32), sun.applet.AppletPanel.run(Unknown Source), java.lang.Thread.run(Unknown Source)]
java.lang.NullPointerException
    at myclass.init(myclass.java:32) <- Line 32 is "while ((i = myInputStream....."
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Что может быть причиной исключения?

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

На самом деле, взглянув на второй взгляд, ваш InputStream myInputStream = getClass().getResourceAsStream(url); не имеет смысла, вместо этого используйте

Url url = new Url("http://url.com/file.ext");
UrlConnection urlCon = url.openConnection();
InputStream input = urlCon.getInputStream();

Это должно правильно захватить байты

3 голосов
/ 09 июня 2011

InputStream явно ноль. Это единственный объект, который разыменовывается в этой строке.

getResourceAsStream() использует загрузчик классов для поиска именованного ресурса в CLASSPATH. URL, который вы указали, гарантированно НЕ будет присутствовать в вашем CLASSPATH, поэтому здесь нет никаких загадок.

...