2

環境

私はJUNG ライブラリを使用するプロジェクトに取り組んでいます。私のカスタム Java コードと Jung ライブラリはすべて wwwroot/WEB-INF/lib の下に配置されています。

JUNG の特定のクラスは、同じフォルダー (デフォルトで CF によって与えられる) にも存在する Apache commons-collections.jar に依存することに注意してください。

問題

CF7 から CF10 への移行を計画しているため、プロジェクト内のすべてのコードでパイロット テストを行っているところ、特定のコード (JUNG を使用するコード) が「クラスが見つかりません」という例外で失敗することがわかりました。

CF 10 で指定されたcommons-collections-2.1.jarのメソッドをデバッグおよびチェックすると、CF 7 に存在するものとは異なることがわかりました。JAR を最新の commons-collections-3.2.1 バージョンに更新すると、必要なすべてのクラスが見つかったため、コードは正常に機能します。

デフォルトのcommons-collections-2.1.jarに合わせてコード ベースを変更できますが、その場合、開発とテストのサイクルに少なくとも 2 ~ 3 か月かかります。最後の選択肢として、できれば避けたいと思っています。

さて、私の質問は -

  1. 2.1 を 3.2.1 に変更 (更新) すると何が問題になりますか?
  2. この JAR を使用するコア CF の部分は何でしょうか?
  3. CF がこの古い 2.1 (私はそう感じます) JAR バージョンを使用するのはなぜですか?

私がやった在宅ワーク

  • テスト: 残りのアプリケーションに影響を与えないように、別のインスタンスを作成し、JAR を最新の 3.2.1 に変更し、その上でアプリケーションをホストし、いくつかのテストを行いました。問題が発生していないので、すべて問題ないようです。しかし、この JAR に依存して壊れる可能性がある CF の領域があるのではないかと心配しています。

  • cfusion\lib : commons-collections-3.2.1 がメインの lib (cfusion\lib) フォルダーに既に存在することがわかりました。したがって、WEB-INF/lib の JAR を変更しても違いはありません。

  • cfusion\wwwroot\WEB-INF\lib : このフォルダーに配置されたすべての JAR ファイルはアプリケーションのみに使用され、CF 自体では使用されないことを読みました。間違っているか、意味を完全に誤解している可能性があります。私を正してください!

この Q への回答は、CF の理解を深め、問題を解決するのに役立ちます。

4

1 に答える 1

2

私は答えを見つけたと思います。

Adobe が CF10 を作成したときに、WEB-INF/lib の commons-collections.jar を変更したという私の誤解です。そうではありませんでしたし、たとえそうであったとしても(仮定して)、それは私の問題に関係していませんでした。

@Miguel-F@Leighからのコメントを読んだ後、以前のインストールを確認し、lib の変更を比較しました。その間に、以前の開発者の 1 人が、commons-collections を CF によって提供されたオリジナルから JUNG を使用したカスタム コレクションに意図的に変更したことを発見しました。これは、変更に対応する JAR コンパイルの署名とその中の小さなメモから確認できました。

今、同じファイルを新しい CF 10 にコピーしました。レポートはすべて正常に機能しています。

お持ち帰り:

  1. /WEB-INF/lib/ の JAR への変更は、カスタム コードで作業していて、重要なことに自分が何をしているかを理解している場合にのみ、CF インストール全体には影響しません。
  2. 可能であれば、そのような変更をアプリケーション開発ログの一部として文書化してください。そうすれば、その場所を離れるときに、次の開発者がこれらのカスタマイズを手間をかけずに知ることができます。
  3. あなたの問題についてコミュニティに話し、コミュニティに問題を理解してもらう過程で、答えが見つかるかもしれません。:)

ありがとうございました

@Miguel-F@Brianに、システム構成に関する情報提供に感謝します。そして、彼の別の方法について@Leighに感謝しますか?. それは私にもう一度考えさせ、私の答えを見つけさせました。

于 2013-03-21T06:22:41.187 に答える