Alexandre Delarue wrote:
> I'm developing an application that needs to display several times the
> same data model, based on different imput files. This application
> creates a new instance of a class, let's call it VisADViewer, for each
> file. When the second instance of the class is created, the following
> exception is thrown:
>
> Visad.TypeException : ScalarType: name already used
>
> This happens in this section of my code:
> ...
> RealType xRT = new RealType("latitude", null, null);
> RealType yRT = new RealType("longitude", null, null);
> RealType zRT = new RealType("temperature", null, null);
> ...
>
> I have nothing declared static... in my code. Did anybody ever
> experience something like that ? Any idea to solve the problem ?
> (My first thought is that something may be declared static in the visad
> package...)
VisAD remembers all ScalarTypes (including RealTypes.)
The second time around, you'll want to fetch the original type.
Change the above code to something like this:
RealType xRT;
try {
xRT = new RealType("latitude", null, null);
} catch (TypeException te) {
xRT = RealType.getRealTypeByName("latitude");
}
Even better might be to have a method like:
private static RealType getReal(String name)
{
try {
return new RealType(name, null, null);
} catch (TypeException te) {
return RealType.getRealTypeByName(name);
}
}
and then your original code becomes:
RealType xRT = getReal("latitude");
RealType yRT = getReal("longitude");
RealType zRT = getReal("temperature");