Java 关于尝试读取.FIT文件时出现的异常

Java 关于尝试读取.FIT文件时出现的异常,java,fits,Java,Fits,我有一个包含.FIT文件的文件夹,我有以下代码来读取它们: private static void readFitFile() { try { List<File> filesdebuglder = Files.walk(Paths.get(LOCAL_EXPANDED_DATA_PATH)) .filter(Files::isRegularFile)

我有一个包含.FIT文件的文件夹,我有以下代码来读取它们:

private static void readFitFile() {

    try {
        List<File> filesdebuglder = Files.walk(Paths.get(LOCAL_EXPANDED_DATA_PATH))
                                         .filter(Files::isRegularFile)
                                         .map(Path::toFile)
                                         .collect(Collectors.toList());
        System.out.println("There are " + filesdebuglder.size() + " .FIT files in folder " + LOCAL_EXPANDED_DATA_PATH);

        for (File afile : filesdebuglder) {
            System.out.println("Doing something cool with file " + afile.getName() + " ...");
            Fits fitsFile = new Fits(afile);
            ImageHDU imageHDU = (ImageHDU) fitsFile.readHDU();
            StandardImageTiler tiler = imageHDU.getTiler();
            // The exception happens with getCompleteImage() method
            float[][][][] tmp = (float[][][][]) tiler.getCompleteImage();
            System.out.println("tmp is " + tmp);
            float[][] imgData = tmp[0][0];
            System.out.println("imgData is " + imgData );


        }

    } catch (FitsException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch(ClassCastException e) {
        e.printStackTrace();
    }

}
我使用的是最新的库依赖项,我可以使用GIMP打开FIT文件

    <dependency>
        <groupId>gov.nasa.gsfc.heasarc</groupId>
        <artifactId>nom-tam-fits</artifactId>
        <version>${nom-tam-fits.version}</version>
    </dependency>

<properties>
    <nom-tam-fits.version>1.15.2</nom-tam-fits.version>
</properties>

gov.nasa.gsfc.heasarc
名谭适合
${nom tam fits.version}
1.15.2
我正在尝试读取带有.FIT文件的文件夹,并训练使用deeplearning4j训练模型识别这些文件的内容,但由于出现异常,我无法读取任何文件。我做错了什么

编辑。这是正确的代码:

private static void readFitFile() {

    try {
        List<File> filesdebuglder = Files.walk(Paths.get(LOCAL_EXPANDED_DATA_PATH))
                                         .filter(Files::isRegularFile)
                                         // .filter(line -> line.getName(0).toString().contains(".FIT"))
                                         .map(Path::toFile)
                                         .collect(Collectors.toList());
        System.out.println("There are " + filesdebuglder.size() + " .FIT files in folder " + LOCAL_EXPANDED_DATA_PATH);
        int count = 1;
        for (File afile : filesdebuglder) {
            System.out.println("Doing something cool with file " + afile.getName() + " ...");
            Fits fitsFile = new Fits(afile);
            ImageHDU imageHDU = (ImageHDU) fitsFile.readHDU();
            StandardImageTiler tiler = imageHDU.getTiler();
            short[][] tmp = (short[][] ) tiler.getCompleteImage();
            System.out.println("tmp is " + tmp);
            short imgData = tmp[0][0];
            System.out.println("imgData is " + imgData );

            count ++;
            System.out.println("Done with the file " + afile.getName() + " ... " + count);
            fitsFile.close();

        }

    } catch (FitsException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch(ClassCastException e) {
        e.printStackTrace();
    }

}
private static void readFitFile(){
试一试{
List filesdebuglder=Files.walk(PATH.get(本地\扩展\数据\路径))
.filter(文件::isRegularFile)
//.filter(line->line.getName(0).toString()包含(“.FIT”))
.map(路径::toFile)
.collect(Collectors.toList());
System.out.println(“文件夹中有“+filesdebuglder.size()+”.FIT文件”+LOCAL\u EXPANDED\u DATA\u PATH);
整数计数=1;
对于(文件文件:FileDebugger){
System.out.println(“使用文件“+afile.getName()+”)做一些很酷的事情”;
配合配合文件=新配合(afile);
ImageHDU ImageHDU=(ImageHDU)fitsFile.readHDU();
StandardImageTiler tiler=imageHDU.getTiler();
short[][]tmp=(short[][])tiler.getCompleteImage();
System.out.println(“tmp为”+tmp);
短imgData=tmp[0][0];
System.out.println(“imgData是”+imgData);
计数++;
System.out.println(“使用文件“+afile.getName()+”…+count完成);
fitsFile.close();
}
}渔获物(FitscexE){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}catch(ClassCastException e){
e、 printStackTrace();
}
}

tiler.getCompleteImage()返回一个二维
short
数组,您可以尝试将其强制转换为一个四维
float
数组。 这在java中是不可能的

见下文:

public static void main(String[] args) {
    Object s = new short[][]{};
    float[][][][] f = new float[][][][]{};
    f=(float[][][][])s;
}

java.lang.ClassCastException:[[S不能强制转换为[[[F

tiler.getCompleteImage()返回一个二维
数组,您尝试将其强制转换为一个四维
浮点
数组。
这在java中是不可能的

见下文:

public static void main(String[] args) {
    Object s = new short[][]{};
    float[][][][] f = new float[][][][]{};
    f=(float[][][][])s;
}
java.lang.ClassCastException:[[S不能强制转换为[[[F]