既存のクラスの新しいバージョンのロードとコンパイルに問題があります。それらがロードされた時点では、それらへの参照は使用されていません。クラス「Test.Extended」は、クラス「Test.Base」を拡張します。クラス「Extended」は、クラス「Base」で ClassMethod を呼び出します。問題は、両方のクラスで強制コンパイルをロードして実行した後でも、呼び出される "Base" からの ClassMethod が、新しくコンパイルされたクラスのメソッドではなく、古いバージョンのメソッドであるということです (コンソールへの書き込みによって確認されます)。
両方をコンパイルするために、ターミナルから次のコマンドを使用しています (f: 強制を意味し、c: ロード中にコンパイルすることを意味します)。
NAMESPACE>w $system.OBJ.Load("C:\Test.Base.cls.xml","fc")
Load started on 01/27/2009 10:10:34
Loading file C:\Test.Base.cls.xml as xml
Imported class: Test.Base
Compiling class Test.Base ..................
Compiling routine Test.Base.1
Load finished successfully.
1
NAMESPACE>w $system.OBJ.Load("C:\Test.Extended.cls.xml","fc")
Load started on 01/27/2009 10:10:34
Loading file C:\Test.Extended.cls.xml as xml
Imported class: Test.Extended
Compiling class Test.Extended ..................
Compiling routine Test.Extended.1
Compiling routine Test.Extended.2
Load finished successfully.
1
これらの 2 つのファイルをシステムが自動的にロードしてコンパイルする必要がありますが、システムが古いバージョンを使用し続けるため、それができません。Intersystems Caché に最新バージョンのコンパイル済みクラスを強制的に使用させる方法を知っている人はいますか?
ありがとう、ルイス