2014-10-16 220 views
0

我跑一个geoscript,常规教学代码:`抛出java.lang.ClassNotFoundException:javax.media.jai.ImageLayout`错误

groovy:000> import geoscript.layer.GeoTIFF 
groovy:000> format = new GeoTIFF() 
groovy:000> raster = format.read(new File("raster.tif")) 

,并得到了如下错误:

ERROR java.lang.NoClassDefFoundError: 
javax/media/jai/ImageLayout 

我对JAI的知识有限。我不知道这是否是一个普遍的JDK配置问题或使用Groovy等问题

我的问题是:

这是什么错误的原因与javax.media.jai.ImageLayout以及如何解决相关? 如何确认javax.media.jai.ImageLayout是否已真正安装。

谢谢

P.S.软件环境是Ubuntu的12.04有:

$java -version 
java version "1.6.0_32" 
OpenJDK Runtime Environment (IcedTea6 1.13.4) (6b32-1.13.4-4ubuntu0.12.04.2) 
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode) 

$groovy -v 
Groovy Version: 1.8.6 JVM: 1.6.0_32 Vendor: Sun Microsystems Inc. OS: Linux 

- 更新 -

我改变了JDK到Oracle

$ java -version 
java version "1.7.0_72" 
Java(TM) SE Runtime Environment (build 1.7.0_72-b14) 
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode) 

,仍然我收到以下错误:

ERROR java.lang.NoClassDefFoundError: 
javax/media/jai/ImageLayout 
     at org.geotools.gce.geotiff.GeoTiffFormat.getReader (GeoTiffFormat.java:287) 
     at org.geotools.gce.geotiff.GeoTiffFormat$getReader.call (Unknown Source) 

另外,我用来安装Oracle JDK的命令如下:

sudo add-apt-repository ppa:webupd8team/java 
sudo apt-get update 
sudo apt-get install oracle-java7-installer 

我也没有

sudo apt-get install libjai-core-java libjai-imageio-core-java 

,我仍然得到同样的错误。

回答

0

要使用javax.media.jai.ImageLayout您需要一个Oracle JDK。它在OpenJDK中不存在。我不知道你使用的图书馆,所以我不能告诉你是否有任何选择为图像处理注入不同的策略。切换到Oracle JDK并测试它是否适合您。

+0

谢谢,我切换到Oracle JDK,它仍然给错误。请参阅更新。 – tinlyx 2014-10-16 22:53:47

+0

你有没有在你的系统中安装jai-imageio?在Fedora linux中,软件包名为jai-imageio-core – 2014-10-17 05:29:30

+0

我不确定。我刚刚列出了用于在更新中安装JDK的命令。 – tinlyx 2014-10-17 05:34:04