2016-03-07 111 views
0

這是我的Scala代碼。我正嘗試使用geotrellis庫將geotiff文件攝入HDFS。IllegalAccessException ..不能訪問修飾符「保護」類的成員

package RasterDataIngest.RasterDataIngestIntoHadoop 

import geotrellis.spark._ 
import geotrellis.spark.ingest._ 
import geotrellis.spark.io.hadoop._ 
import geotrellis.spark.io.index._ 
import geotrellis.spark.tiling._ 
import geotrellis.spark.utils.SparkUtils 
import geotrellis.vector._ 
import org.apache.hadoop.fs.Path 
import org.apache.spark._ 
import com.quantifind.sumac.ArgMain 
import com.quantifind.sumac.validation.Required 

class HadoopIngestArgs extends IngestArgs { 
    @Required var catalog: String = _ 
    def catalogPath = new Path(catalog) 
} 

object HadoopIngest extends ArgMain[HadoopIngestArgs] with Logging { 
    def main(args: HadoopIngestArgs): Unit = { 
    System.setProperty("com.sun.media.jai.disableMediaLib", "true") 

    implicit val sparkContext = SparkUtils.createSparkContext("Ingest") 
    val conf = sparkContext.hadoopConfiguration 
    conf.set("io.map.index.interval", "1") 

    val catalog = HadoopRasterCatalog(args.catalogPath) 
    val source = sparkContext.hadoopGeoTiffRDD(args.inPath) 
    val layoutScheme = ZoomedLayoutScheme() 

    Ingest[ProjectedExtent, SpatialKey](source, args.destCrs, layoutScheme, args.pyramid){ (rdd, level) => 
     catalog 
     .writer[SpatialKey](RowMajorKeyIndexMethod, args.clobber) 
     .write(LayerId(args.layerName, level.zoom), rdd) 
    } 
    } 
} 

當我運行此代碼時,出現以下錯誤。 請幫我解決這個錯誤。

java.lang.IllegalAccessException: Class org.osgeo.proj4j.Registry can not access a member of class org.osgeo.proj4j.proj.Projection with modifiers "protected" 

回答

0

我認爲這個問題與壞的sbt緩存或Java版本不匹配有關。嘗試最新的穩定GeoTrellis版本:0.10.3(Scala 2.10/2.11,Java 8,Spark 1.6.x)。如果您計劃在Spark 2中使用GeoTrellis,請查看GeoTrellis快照(版本1.0.0將支持Spark 2+,Java 8和Scala 2.11)。