我有一个 grails 3 项目,在src / main / groovy /文件夹中有java源代码(如指定的here)。
代码在IntelliJ IDE中运行良好,在Mac OS X El Capitan上部署Tomcat 7服务器(使用7.0.73,7.0.70和7.0.33测试,按指定here安装)< / p>
服务器详细信息(错误发生的位置)
但是在Red Hat Linux服务器上,tomcat version命令报告以下内容(尽管启动默认页面列出了版本7.0.33),
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
war文件在放入web应用程序目录时运行,但在使用src / main / groovy中的java类的任何页面上停顿并出现以下错误(在catalina.out日志文件中),
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
偶尔会出现此错误(虽然在Linux上设置LD_LIBRARY_PATH后似乎停止了),
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
有些可行的方法,
当导航到webapps / war_name / WEB-INF / classes / package_name /那里有类文件时,可以使用(从classes /文件夹而不是package_name /)java package_name.class_name运行AND。
使用opencv的测试程序在服务器上成功运行,因此似乎正确安装了本机库。
答案 0 :(得分:0)
这是因为tomcat不尊重Linux机器上的LD_LIBRARY_PATH设置。所以用java运行的任何测试程序...(包括运行java tomcat_dir / webapps / war_name / classes / File.class)都可以工作,但它仍会在tomcat下破坏并抱怨导入类失败。解决这个问题的方法是忽略LD_LIBRARY_PATH(或者不要使用Tomcat!,我希望),并将so文件符号链接或复制到java.library.path路径之一。