1

私はactivejdbc 1.4.9を使用しています。2 つの ActiveJDBC モデル クラスを持つ 1 つの jar (maven を使用) を作成しました。jar をアプリケーションに追加しました。アプリケーションには、さらに 3 つのモデル クラスがあります。アプリケーションをコンパイルして実行しようとすると (gradle ベース)、activejdbc はアプリケーションにある 3 つのクラスのみを計測しますが、jar にあるクラスは計測しません。jar に入っている 2 つのモデルにデータを書き込もうとすると、次のように例外がスローされます。

org.javalite.activejdbc.DBException: DB からメタデータを取得できませんでした。DB にテーブルが存在しますか?

今、私はある疑問を持っています。いくつかのことを解決して理解するのを手伝ってください。

  1. インストルメンテーションはどのように行われますか?
  2. jar を作成すると、インストルメント化されたクラスが含まれますか?
  3. なぜこのエラーがスローされるのですか?
4

1 に答える 1

1

クラスがインストルメント化されていない場合、このエラーがスローされます。これは、モデル クラスを jar ファイルに配置する前に、それらを計測する必要があることを意味します。ただし、どのビルド方法を使用してもかまいません。このhttp://javalite.io/instrumentation では、インストルメンテーションとその方法について説明しています。インストルメンテーションは jar を作成しません。クラスにバイト コードを追加するだけです。あなたが必要とするすべてのシナリオで:

  1. コードを書く:)
  2. コンパイル
  3. 楽器

この後、次のいずれかを実行できます。

  • ファイル システムのクラス ファイルを使用してアプリを実行する
  • クラスファイルをjarファイルにパッケージ化し、それをクラスパスで使用します
  • jar ファイルをより大きなアプリ (WAR、EAR、RAR など) にパッケージ化し、アプリをデプロイする

理にかなっていますか?

于 2014-12-08T23:58:01.810 に答える