Hi Andreas:
That's definitely a bug! Apparently we do not set the "location" when
modifying existing files. There will be a fix in shortly, likely this
afternoon.
Thank you for bringing this up!
Hailey
On Wed, Apr 7, 2021 at 1:28 PM Andreas Imner <andreas.imner@xxxxxxxxx>
wrote:
> Ok, but the documentation says different? The C-library is needed like you
> say (and I have it installed) and used by Java-library via JNI?
>
>
> https://docs.unidata.ucar.edu/netcdf-java/current/userguide/writing_netcdf.html
>
> https://docs.unidata.ucar.edu/netcdf-java/current/userguide/netcdf4_c_library.html
>
> And I can create new files by using
> NetcdfFormatWriter.openExisting("/temp/input.nc").setFormat(
> NetcdfFileFormat.NETCDF4); // note that I dont call "setNewFile(false)"
> (This will create a file called "input.nc" but much smaller and
> containing variables filled with "garbage" data.. but the file is still
> written and readable)
>
>
> Den ons 7 apr. 2021 kl 19:50 skrev John Caron <jcaron1129@xxxxxxxxx>:
>
>> Hi Andreas:
>>
>> Netcdf-Java does not support writing or modifying netcdf-4 files. You
>> need to use the netcdf-4 C library directly. Sorry.
>>
>> John
>>
>> On Wed, Apr 7, 2021 at 8:49 AM Andreas Imner <andreas.imner@xxxxxxxxx>
>> wrote:
>>
>>> (... continuing since I clicked "Send" to soon)
>>>
>>> The NPE occurs because the 'ncfile.getLocation()' returns null
>>>
>>> My question is, is this supposed to work and am I doing something wrong?
>>> Or maybe this is not the way you are supposed to work with NetCDF -files
>>> that you want to modify the contents of?
>>>
>>> Den ons 7 apr. 2021 kl 16:33 skrev Andreas Imner <
>>> andreas.imner@xxxxxxxxx>:
>>>
>>>> Hi!
>>>> A am trying to use the Java NetCDF library to modify the data of a
>>>> variable in an existing NetCDF4 file.
>>>>
>>>> I use the 5.4.1 version of the Java library
>>>> I have version 4.7.4_2 of the netcdf C-library installed and it works
>>>> properly.
>>>>
>>>> The problem I get is that when opening the existing file for writing, a
>>>> NPE is thrown.
>>>>
>>>> My code looks something like this...
>>>>
>>>> NetcdfFormatWriter.Builder builder =
>>>> NetcdfFormatWriter.openExisting("/temp/input.nc").setFormat(NetcdfFileFormat.NETCDF4).setNewFile(false);
>>>> NetcdfFormatWriter writer = builder.build();
>>>>
>>>> But when .build() is called an exception is thrown
>>>>
>>>> Exception in thread "main" java.lang.NullPointerException
>>>> at ucar.nc2.NetcdfFiles.canonicalizeUriString(NetcdfFiles.java:359)
>>>> at ucar.nc2.jni.netcdf.Nc4Iosp._open(Nc4Iosp.java:253)
>>>> at ucar.nc2.jni.netcdf.Nc4Iosp.openForWriting(Nc4Iosp.java:239)
>>>> at ucar.nc2.write.NetcdfFormatWriter.<init>(NetcdfFormatWriter.java:329)
>>>> at ucar.nc2.write.NetcdfFormatWriter.<init>(NetcdfFormatWriter.java:49)
>>>> at
>>>> ucar.nc2.write.NetcdfFormatWriter$Builder.build(NetcdfFormatWriter.java:261)
>>>>
>>>> Looking at the code in the class Nc4Iosp.java
>>>>
>>>> private void _open(RandomAccessFile raf, NetcdfFile ncfile, boolean
>>>> readOnly) throws IOException {
>>>> ...
>>>> String location = NetcdfFiles.canonicalizeUriString(ncfile.getLocation());
>>>>
>>>>
>>>> _______________________________________________
>>> NOTE: All exchanges posted to Unidata maintained email lists are
>>> recorded in the Unidata inquiry tracking system and made publicly
>>> available through the web. Users who post to any of the lists we
>>> maintain are reminded to remove any personal information that they
>>> do not want to be made public.
>>>
>>>
>>> netcdf-java mailing list
>>> netcdf-java@xxxxxxxxxxxxxxxx
>>> For list information or to unsubscribe, visit:
>>> https://www.unidata.ucar.edu/mailing_lists/
>>>
>> _______________________________________________
> NOTE: All exchanges posted to Unidata maintained email lists are
> recorded in the Unidata inquiry tracking system and made publicly
> available through the web. Users who post to any of the lists we
> maintain are reminded to remove any personal information that they
> do not want to be made public.
>
>
> netcdf-java mailing list
> netcdf-java@xxxxxxxxxxxxxxxx
> For list information or to unsubscribe, visit:
> https://www.unidata.ucar.edu/mailing_lists/
>