一个下午,找了一条小虫,JAVA读取fits文件出错异常

博主在尝试用JAVA读取FITS光谱文件时遇到问题,原本使用的老版本库能正常读取,但升级到新版本数据后出现无法识别FITS文件的异常。通过下载不同版本数据验证,确定数据本身无问题。接着,博主深入源码进行调试,最终发现并解决了关键字处理的bug。这个过程增强了博主对JAVA调试和库使用的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备用JAVA完成对光谱的读取,并寻找相似集。下午开始,就卡在光谱的读取中,郁闷了一个下午。以前用MATLAB写过读取光谱的代码(FIT文件格式解析及MATLAB读取程序),也用C++写过,但是觉得C++以前一个字节一个自己的读取过于麻烦,所以对于JAVA的,先找找是不是有读取fits文件的包。没想到还找到了:Java Library for access to FITS files 。但是,后来问题来了:

开始我用v2..3版本的fits数据,读取文件都没问题,对于关键字的读取很顺利。后来想着现在的pipeline都是2.6版本的了,所以还是重新下载了新版本的数据,但是问题来了,一直显示不是fits文件。但是我用fv打开一切都正常。后来下了dr8的数据,也没发现问题,说明这个包的兼容性还是可以的,但是不知道为什么出现问题。

首先,我想到是不是因为数据的事,后来重新下载了2.6版本的其他数据,测试,还是一样的问题。而且用fv能正常打开,所以数据的问题应该可以排除。

没办法,只能从包里找问题了,因为pipeline跑出来的数据是没法重新修改的,否则这么大的数据,是整个工程的事。幸好这个Library给出了source文件,把source文件加载了,然后一步一步的调试,F11,F5,F6,F8,System.out.println, 找了很久,跟踪了很久,终于发现问题了。


肯定是这个keyword出了问题,但是没有明显的差别啊。后来跟踪到源代码的异常处理后发现问题的关键所在:

 public FitsKeyword(byte[] card) throws Fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值