2016-12-31 9 views
0

私はgrails 3プロジェクトをsrc/main/groovy /フォルダ(特定のhere)にjavaソースコードとともに持っています。LinuxのTomcat 7がGrails 3のWARファイルでJavaクラスを見つけることができません

コードはIntelliJのIDEにうまく機能

とTomcat 7サーバーを搭載したMac OS Xエルキャピタンに配備する場合(、7.0.73、7.0.70、および7.0.33でテスト指定hereとしてインストール)

(エラーが発生した)Serverの詳細はRed Hat Linuxサーバ上しかし

Tomcatのバージョンのコマンドを報告以下(ただし起動時のデフォルトページのリストバージョン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アプリケーションディレクトリに置くが、(catalina.outログファイルに)次のエラーでグルーヴィー/メインのsrc /内のJavaクラスを使用するすべてのページの屋台、

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 

仕事をいくつかのこと、

  • コードはwarファイルに正常に作成されます
  • webapps/war_name/WEB-INF/classes/package_name /に移動すると、クラスファイルがあり、(package /ではなくclasses /フォルダから) package_name.class_name。

  • opencvを使用するテストプログラムはサーバー上で正常に実行されるため、ネイティブライブラリが正しくインストールされているようです。

  • 同じwarファイルは、Tomcatバージョン7.0.70,7.0.73,7.0.33のMac OS El Capitanで動作しますが、サービスではなくbinシェルスクリプトを使用します。

答えて

0

これは、tomcatがLinuxマシンでLD_LIBRARY_PATH設定を尊重しないためです。したがって、javaを使って実行されるテストプログラム(javaのtomcat_dir/webapps/war_name/classes/File.classを含む)は動作しますが、tomcatの下でも破損し、クラスのインポートに失敗すると不平を言います。この問題を解決するには、LD_LIBRARY_PATHを無視するか(またはTomcatを使用しないでください!)、symlinkまたはsoファイルをjava.library.pathパスの1つにコピーします。

関連する問題