GeoServer启动报错:java.lang.NoClassDefFoundError: Could not initialize class javax.media.jai.JAI

2022-10-31 16:24:59 浏览数 (1)

环境

  • 操作系统:CentOS 7
  • JDK版本:1.8
  • Tomcat版本:8.x
  • GeoServer版本:Stable 2.21.0

问题

CentOS 7系统通过geoserver官方提供的war包形式部署,tomcat启动正常,确定tomcat没问题,将下载的geoserver.war包放置tomcat的webapps路径下,tomcat启动状态会自动部署,通过启动log查看报错:

代码语言:javascript复制
java.lang.NoClassDefFoundError: Could not initialize class javax.media.jai.JAI

tomcat在linux上启动时查看控制台命令

代码语言:javascript复制
tomcat/bin/start.sh && tail -f tomcat/logs/catalina.out

解决

1.下载JAI Java Advanced Imaging (JAI) 是Oracle开发的用于高级图像处理的库。 GeoServer无需它即可运行, 因为它随附了纯Java版本的JAI。 安装JAI可以大大提高处理图像时的性能, 即栅格格式数据。 如果您不打算使用空间栅格数据, 当您索要地图时,GeoServer可以使用图像格式,例如, 在WMS GetMap 请求中,因此将它放在生产站点上很值得 通过wget命令下载

代码语言:javascript复制
wget http://download.java.net/media/jai/builds/release/1_1_3/jai-1_1_3-lib-linux-amd64-jre.bin

2.将文件复制到安装JRE的文件夹中,然后运行它:

代码语言:javascript复制
cp jai-1_1_3-lib-linux-amd64-jre.bin /jre1.8.0/.(改成你的jre安装路径)

切入到你的jre路径下

代码语言:javascript复制
cd /usr/lib/jvm/jre1.8.0/(改成你的jre安装路径)

运行

代码语言:javascript复制
sh jai-1_1_3-lib-linux-amd64-jre.bin

然后会出现类似用户许可协议,看完就行了,按键盘回车(Enter) 出现下面的Done代表已经完成

代码语言:javascript复制
    inflating: COPYRIGHT-jai.txt
    inflating: DISTRIBUTIONREADME-jai.txt
    inflating: LICENSE-jai.txt
    inflating: THIRDPARTYLICENSEREADME-jai.txt
    inflating: UNINSTALL-jai
    inflating: lib/amd64/libmlib_jai.so
    inflating: lib/ext/jai_core.jar
    inflating: lib/ext/jai_codec.jar
    inflating: lib/ext/mlibwrapper_jai.jar
Done

安装完毕之后如果还是报错,再尝试安装下面的jai_imageio

代码语言:javascript复制
wget http://download.java.net/media/jai-imageio/builds/ release/1.1/jai_imageio-1_1-lib-linux-amd64-jre.bin

下载之后操作和上面的完全相同 也可以直接下载该jar包,jai_imageio-1.1.jar点击下载,然后将下载的jar包放到安装jdk路径下,jdk1.8.0(前面这里换成你自己的路径,后面不用变)/jre/lib/ext的下面

代码语言:javascript复制
jdk1.8.0(前面这里换成你自己的路径,后面不用变)/jre/lib/ext

最后重启tomcat服务

0 人点赞