Linux上的Tomcat7无法在Grails3WAR文件中找到Java类

Linux上的Tomcat7无法在Grails3WAR文件中找到Java类,java,tomcat,grails,Java,Tomcat,Grails,我有一个grails3项目,java源代码位于src/main/groovy/文件夹中(如指定) 该代码在IntelliJ IDE中运行良好,在Mac OS X El Capitan上部署Tomcat 7服务器时运行良好(使用7.0.73、7.0.70和7.0.33进行测试,按规定安装) 服务器详细信息(发生错误的位置) 但是,在Red Hat Linux服务器上,tomcat version命令报告了以下内容(尽管启动默认页面列出了版本7.0.33) war文件在放入web app目录时运行,

我有一个grails3项目,java源代码位于src/main/groovy/文件夹中(如指定)

该代码在IntelliJ IDE中运行良好,在Mac OS X El Capitan上部署Tomcat 7服务器时运行良好(使用7.0.73、7.0.70和7.0.33进行测试,按规定安装)

服务器详细信息(发生错误的位置)

但是,在Red Hat Linux服务器上,tomcat version命令报告了以下内容(尽管启动默认页面列出了版本7.0.33)

war文件在放入web app目录时运行,但在src/main/groovy中使用java类的任何页面上暂停,并出现以下错误(在catalina.out日志文件中)

偶尔会出现这个错误(尽管在Linux上设置LD_LIBRARY_PATH之后似乎停止了)

一些有用的东西,

  • 代码成功构建到war文件
  • 导航到webapps/war\u name/WEB-INF/classes/package\u name/时,类文件就在那里,并且可以使用(从类/文件夹而不是package\u name/)java package\u name.class\u name运行

  • 使用opencv的测试程序在服务器上成功运行,因此本机库似乎已正确安装

  • 相同的war文件适用于Mac OS El Capitan和Tomcat版本7.0.70、7.0.73、7.0.33,但它使用的是bin shell脚本,而不是服务

这是因为tomcat不尊重Linux机器上的LD\u LIBRARY\u路径设置。所以任何用java运行的测试程序。。。(包括运行javatomcat_dir/webapps/war_name/classes/File.class)可以正常工作,但它仍然会在tomcat下崩溃,并抱怨导入类失败。解决方法是忽略LD_LIBRARY_PATH(或者不使用Tomcat!),并将so文件符号链接或复制到java.LIBRARY.PATH路径之一

Server version: Apache Tomcat/7.0.70
Server built:   Aug 5 2016 19:24:52 UTC
Server number:  7.0.70.0
OS Name:        Linux
OS Version:     2.6.32-642.6.2.el6.x86_64
Architecture:   amd64
JVM Version:    1.8.0_111-b14
JVM Vendor:     Oracle Corporation
ERROR org.springframework.boot.context.web.ErrorPageFilter - Forwarding to error page from request [/url/] due to exception [Could not initialize class package_name.class_name]
java.lang.NoClassDefFoundError: Could not initialize class package_name.class_name
ERROR org.springframework.boot.context.web.ErrorPageFilter - Forwarding to error page from request [/url] due to exception [no opencv_java310 in java.library.path]
java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path