2016-10-12 90 views
0

我想用gdal api(java)加載geotiff文件。這是我的測試代碼。打開文件gdal java時出錯

public class App 
{ 
    public static void main(String[] args) 
    { 
     gdal.AllRegister(); 
     Dataset dataset = gdal.Open("output.tif"); 
    } 
} 

但我有一個錯誤

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.Dataset_SWIGUpcast(J)J 
at org.gdal.gdal.gdalJNI.Dataset_SWIGUpcast(Native Method) 
at org.gdal.gdal.Dataset.<init>(Dataset.java:20) 
at org.gdal.gdal.gdal.Open(gdal.java:585) 
at org.gdaltest.projection.App.main(App.java:18) 

我使用Maven的項目,所以我說@中依賴

<dependency> 
    <groupId>org.gdal</groupId> 
    <artifactId>gdal</artifactId> 
    <version>2.1.0</version> 
</dependency> 

我使用Windows 10和安裝GDAL 2.1.0。我已經在路徑中設置了環境變量GDAL_DATA和Gdal目錄。

我錯過了什麼?

回答

0

當不得不處理本地庫時,可怕的UnsatisfiedLinkErrors是很常見的問題。

通常情況下,您需要設置java.library.path VM參數,以便Java可以找到本機庫。

See an example here

Another gdal related unsatisfied link error issue here

+0

我沒有問題執行 –

+0

我沒有問題executiongog.RegisterAll(),gdal.AllRegister(),gdal.VersionInfo()。但我仍然有同樣的錯誤,當我使用方法gdal.open(「」) –

1

我解決這個問題。我用位於gdal文件夾(C:\ Program Files \ GDAL)中的jar文件替換了位於存儲庫maven(C:\ Users \ Myuser.m2 \ repository \ org \ gdal \ gdal \ 2.1.0)中的jar文件。現在它起作用了。

+0

我的意思是jar文件在C:\ Program Files \ GDAL \ java –