Java CDF文件解析中的不满意链接错误(UnsatisfiedLinkError)

问题描述 投票:0回答:3

我正在用Java开发一个CDF(万事达卡使用的文件)文件解析器,我正在使用的API是 此处. 为了使用这个API,你需要jar文件。

我不明白我是怎么得到这个异常的,因为它应该在getFile()方法中处理。我在谷歌上搜索了一下,但我还是不明白问题出在哪里......如果有人能给我指出正确的方向,那就太好了。通过跟踪堆栈跟踪... ...在我看来这是一个库的问题。

可以在这里找到api的链接。http: /cdf.gsfc.nasa.govcdfjava_doccdf34

当我试图打开一个CDF文件时,我在运行程序后得到这个错误。

    Exception in thread "main" java.lang.UnsatisfiedLinkError: no cdfNativeLibrary in jav
a.library.path                                                                       
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)                  
        at java.lang.Runtime.loadLibrary0(Runtime.java:845)                          
        at java.lang.System.loadLibrary(System.java:1084)                            
        at gsfc.nssdc.cdf.CDFNativeLibrary.<clinit>(CDFNativeLibrary.java:47)        
        at gsfc.nssdc.cdf.CDF.open(CDF.java:426)                                     
        at gsfc.nssdc.cdf.CDF.open(CDF.java:385)                                     
        at FileModel.getFile(FileModel.java:21)                                      
        at FileModel.main(FileModel.java:9)  

这是我的源代码

import gsfc.nssdc.cdf.*;
import gsfc.nssdc.cdf.util.*;

public class FileModel
{

    public static void main(String[] args)
    {
        getFile();
    }

    public static void getFile()
    {

        try
        {
            CDF cdf = CDF.open("outbound_MidCycle_File.xml");
            //System.out.println(cdf.getID());
        }
        catch(CDFException e)
        {
            System.out.println("ERROR Cannot open CDF File");
        }
        catch(Exception e)
        {
            System.out.println("ERROR");
            System.out.println(e.getMessage());
            e.printStackTrace();
        }

    }

}

我运行的命令如下:

javac -cp '.:cdfjava.jar' FileModel.java
java -cp '.:cdfjava.jar' FileModel
java exception unsatisfiedlinkerror cdf
3个回答
2
投票

在使用API之前,你仍然需要在系统上安装CDF软件发行版。请从以下地方下载相应的版本 http:/cdf.gsfc.nasa.govhtmlsw_and_docs.html 并安装它--这应该可以解决 "本地库 "的问题(至少对我来说是这样)。


0
投票

这并不能解决你的全部问题,但应该能解决一些疑惑。

UnsatisfiedLinkError是一个 Throwable,不是 Exception. 这就是为什么你的代码没有捕捉到它。替换 catch(Exception e)catch(Throwable e).


0
投票

你得到的CDF库是我们在空间物理学中使用的一种特殊的文件格式,而不是与

© www.soinside.com 2019 - 2024. All rights reserved.