Feedback
Did this article resolve your question/issue?

   

Article

What does the message compilation is out of date mean ?

Information

 
TitleWhat does the message compilation is out of date mean ?
URL Name000039078
Article Number000161735
EnvironmentProduct: OpenEdge
Version: All Supported Versions
OS: All Supported Platforms
Question/Problem Description
Instantiating an ABL class results in a message that the class is out of date.

Accessing an OOABL class member results in a message that the compilation is out of date.

Error 12882 occurs after making changes to specific class(es).
 
Steps to Reproduce
Clarifying Information
Error MessageCould not access element <Element Name> of class <Class Name> using object of type <Object Type> - compilation is out of date. (12882)
Defect Number
Enhancement Number
Cause
Resolution
This message is intended to report that there is a mismatch in an object's public or protected methods or properties. There was an attempt to use a method or variable of an OOABL object, but when the runtime loaded the r-code for the class and its superclass(es), it detected a significant mismatch between the class definitions. The AVM (Progress runtime) was not able to find a referenced element in the object's r-code. This would be because the r-code files were compiled at different times and the class or superclass source code has been changed significantly, causing the caller r-code to be out of sync. If the object is being referenced through an interface type, the class referenced in the message is out of sync with the interface. 

For example, the following error is returned:

Could not access element 'getName' of class 'GetData' using object type 'GetData' - compilation is out of date (12882).

- In this instance GetData is a superclass with a method called getName. 
- When a class (call it main.cls) that references GetData was originally compiled the method getName was public.
- The superclass GetData is subsequently changed and getName becomes PROTECTED.
- When main.cls next runs it is unable to find the public getName method and reports the 12881 error.

To resolve this problem, re-compile all code that references modified classes.
Workaround
Notes
Last Modified Date7/10/2017 7:04 AM
Attachment 
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.