[Fwd: Re: Problems w NetcdfFile.openInMemory]

  • Subject: [Fwd: Re: Problems w NetcdfFile.openInMemory]
  • From: John Caron <caron@xxxxxxxxxxxxxxxx>
  • Date: Mon, 27 Jun 2005 18:14:45 -0600

-------- Original Message --------
Subject:        Re: Problems w NetcdfFile.openInMemory
Date:   Mon, 27 Jun 2005 18:02:34 -0600
From:   John Caron <caron@xxxxxxxxxxxxxxxx>
To:     Stuart Maclean <stuart@xxxxxxxxxxxxxxxxxx>
References:     <Pine.LNX.4.58.0506271544590.3313@xxxxxxxxxxxxxxxxxxxxxxxx>

Stuart Maclean wrote:

I'm trying to load netcdf data in an app with no local 'filesystem', such
as a jnlp (web start) environment.  Looks like the best bet, given the
Java Netcdf API, is to locate the data as as resource
(Class.getResourceAsStream). I can thus get the data into a byte[].

But passing that byte[] to NetcdfFile.openInMemory fails with a NPE.
Looking at the latest (2.2.09) sources, it seems that the
InMemoryRandomAccessFile is broken.  The 'buffer' attribute is attached to
the incoming data buf only after a call to 'init(1)' occurs.  The
superclass RandomAccessFile is thus is a bad state, causing an eventual

Any help gratefully apprteciated,

Ok, if you are compiling from source, just move the buffer assignment up:

 public InMemoryRandomAccessFile(String location, byte[] data)  {
   this.location = location;
   this.file = null;
       if (data == null)
           throw new IllegalArgumentException("data array is null");

   buffer = data;
   bufferStart = 0;
   dataSize = buffer.length;
   dataEnd = buffer.length;
   filePosition = 0;
   endOfFile = false;

otherwise, i will have a new release (2.2.10) in an hour or so

thanks for finding that bug!