This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
-------- Original Message -------- Subject: Re: Problems w NetcdfFile.openInMemory Date: Mon, 27 Jun 2005 18:02:34 -0600 From: John Caron <address@hidden> To: Stuart Maclean <address@hidden> References: <address@hidden> 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 NPE. Any help gratefully apprteciated, Stuart
Ok, if you are compiling from source, just move the buffer assignment up: public InMemoryRandomAccessFile(String location, byte[] data) { super(1); 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!