鍍金池/ 問(wèn)答/Java/ 關(guān)于java使用geotools中的GeoTiffReader讀取tif圖像時(shí)報(bào)

關(guān)于java使用geotools中的GeoTiffReader讀取tif圖像時(shí)報(bào)錯(cuò)

關(guān)于java使用geotools中的GeoTiffReader讀取tif圖像時(shí)報(bào)錯(cuò):找不到類(lèi) javax.media.jai.PlanarImage 的錯(cuò)誤
代碼放上:

import java.io.File;
import org.geotools.coverage.grid.GridCoverage2D;
import org.geotools.gce.geotiff.GeoTiffReader;
import org.geotools.geometry.Envelope2D;
import org.opengis.referencing.crs.CoordinateReferenceSystem;

public class ImageExt {
    public static void main(String[] args) {
        GetImageExt("E:\\database\\overview\\\\J46\\J46D001001.tif");
    }
    public static String GetImageExt(String strImageUrl){
        String strExtent = "";
        try {
            String ImageUrl=strImageUrl.replace("\\", "\\\\");;
            File ImageFile=new File(ImageUrl);
            GeoTiffReader reader=new GeoTiffReader(ImageFile);
            GridCoverage2D coverage = reader.read(null);
            CoordinateReferenceSystem crs = coverage.getCoordinateReferenceSystem2D();
            Envelope2D coverageEnvelope = coverage.getEnvelope2D();
            double coverageMinX = coverageEnvelope.getBounds().getMinX();
            double coverageMaxX = coverageEnvelope.getBounds().getMaxX();
            double coverageMinY = coverageEnvelope.getBounds().getMinY();
            double coverageMaxY = coverageEnvelope.getBounds().getMaxY();
            
        } catch (Exception e) {
            // TODO: handle exception
        }
        System.out.println(coverageMinX);    
        return strExtent;
        
    }

}

報(bào)錯(cuò):

Exception in thread "main" java.lang.NoClassDefFoundError:
javax/media/jai/ImageLayout at
zy3dms.ImageExt.GetImageExt(ImageExt.java:18) at
zy3dms.ImageExt.main(ImageExt.java:11) Caused by:
java.lang.ClassNotFoundException: javax.media.jai.ImageLayout at
java.net.URLClassLoader.findClass(URLClassLoader.java:381) at
java.lang.ClassLoader.loadClass(ClassLoader.java:424) at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at
java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 2 more

我不解的是兩個(gè)工程同樣的類(lèi),一個(gè)運(yùn)行正常,一個(gè)報(bào)錯(cuò)。

回答
編輯回答
風(fēng)清揚(yáng)

這個(gè)問(wèn)題本人已解決,在File ImageFile=new File(strImageUrl);打斷點(diǎn),開(kāi)啟調(diào)試模式,
斷點(diǎn)運(yùn)行到GeoTiffReader reader=new GeoTiffReader(ImageFile);時(shí),按F5(進(jìn)入函數(shù)內(nèi)部),但是沒(méi)有運(yùn)行函數(shù),而是跳到classloader.class。
為了加載類(lèi)時(shí)唯一,改為org.geotools.gce.geotiff.GeoTiffReader reader=new org.geotools.gce.geotiff.GeoTiffReader(ImageFile);運(yùn)行正常。
圖片是GeoTiffReader類(lèi)的內(nèi)部函數(shù)。
圖片描述

2017年9月27日 04:40