問題タブ [tomcat5]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Groovy sql.eachRow 関数から NoClassDefFoundError を取得する
特定のデータベース トランザクション呼び出しに対して Groovy プログラムを実行する Java アプリケーションをデバッグしています。ポインターがGroovyプログラムの次の行を通過したとき
次の例外を出力します
sce_expiry.groovy は groovy ファイル名です。
他の人が推奨した解決策は、common-collections.jar と groovy-all.jar がクラスパスにあることを確認するようなものです。確認しました。両方の jar ファイルは、Tomcat 内の webapp のディレクトリの lib フォルダーにあります。クラスは、同じパッケージ名の common-collections.jar 内にあります。
実際、Groovy の経験はほとんどありません。したがって、追加の構成が必要かどうかはわかりません。
誰にもアイデアはありますか?
--------------------------解決策が見つかり、質問が変わる可能性があります--------------
さて、これを機能させる2つの方法を見つけました。そして、それらは関連しています。
まず、ここでは Tomcat 5 を使用しています。Tomcat フォルダーには、ユーザーがアプリケーションで共有される jar ファイルを配置するための common/lib ディレクトリがあります。
すでにいくつかの Apache commons-xxx.jar ファイルが配置されていますが、commons-collection.jar はありません。commons-collection.jar のコピーを既存の jar ファイルと一緒に配置すると、機能します。または、1 つの jar ファイル (commons-dbcp.jar) を削除しても機能します。commons-collection.jar と commons-dbcp.jar は両方とも、アプリケーション独自の lib フォルダーで利用できます。
それでも、これについてさらに調査する必要がありますが、呼び出す関数に対して commons-dbcp.jar が commons-collection.jar と連携する必要があり、その common/lib フォルダーが読み込まれる優先度が高いと思われますしたがって、commons-dbcp.jar が読み込まれると、Tomcat はアプリの lib フォルダーにある同じものを無視し、共通の lib フォルダーにあるものだけを操作します。commons-collection は common lib フォルダーで利用できませんでしたが、commons-dbcp.jar がそれを探しているときに不平を言いました。私が間違っている場合は、私を修正してください。Tomcatがどのように機能するのか完全にはわかりません..
したがって、この質問は Groovy と Grails ではなく、Java と Tomcat 5 でタグ付けされています。