2013-04-10 108 views
0

我正在使用Java中的CDF(文件mastercard使用)文件解析器,我使用的API是here。爲了使用這個API你需要jar文件..Java CDF文件使用UnsatisfiedLinkError解析

我不明白我是如何得到這個異常,因爲它應該在getFile()方法中處理..我谷歌周圍,我仍然不會不明白這個問題是什麼。如果任何人都能指出我的方向是正確的,那就太好了。通過跟蹤stacktrace ..對我來說,似乎這是圖書館的問題。

給API的鏈接在這裏找到:http://cdf.gsfc.nasa.gov/cdfjava_doc/cdf34/

當試圖打開我運行程序後收到此錯誤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 
+1

這與你的庫中的'native' api有關。它是否帶有'so'文件的任何'dll'?這些需要包含在java.library.path中。 – 2013-04-10 21:53:11

+0

它沒有附帶任何dll文件:\ – RyanDawkins 2013-04-12 19:21:00

回答

0

這不會解決你的整個問題,但要解決的一些奧祕:

UnsatisfiedLinkError是Throwable,不是Exception。這就是爲什麼你的代碼沒有捕獲它。將catch(Exception e)替換爲catch(Throwable e)