Kbase P162211: Class variable defined in a form prevents form loading in Visual Designer when target class is outsi
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  20/12/2010 |
|
Status: Verified
SYMPTOM(s):
Class variable defined in a form prevents form loading in Visual Designer when target class is outside of the Workspace
The Visual Designer fails to load forms that reference classes that are located outside the current workspace directory
The diectory containing the classes is referenced in the projects PROPATH
Development project stores some files on a location (for example: a network share) that is outside of the project directory
Form that references a class in a linked resource of a project fails to load in Visual Designer, if the linked directory is outside of the Workspace
Visual Designer doesn't update class cache from PROPATH directories outside of the workspace
An unexpected error was encountered loading this class
An error occurred while serializing the design surface.
Java stack trace from Eclipse:
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.ui.console".
!STACK 0
org.eclipse.swt.SWTException: Device is disposed
at org.eclipse.swt.SWT.error(SWT.java:3777)
at org.eclipse.swt.SWT.error(SWT.java:3695)
at org.eclipse.swt.SWT.error(SWT.java:3666)
at org.eclipse.swt.widgets.Display.error(Display.java:1180)
at org.eclipse.swt.widgets.Display.asyncExec(Display.java:648)
at org.eclipse.ui.internal.console.ConsoleDropDownAction.consolesRemoved(ConsoleDropDownAction.java:150)
at org.eclipse.ui.internal.console.ConsoleManager$ConsoleNotifier.run(ConsoleManager.java:154)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.ui.internal.console.ConsoleManager$ConsoleNotifier.notify(ConsoleManager.java:174)
at org.eclipse.ui.internal.console.ConsoleManager.fireUpdate(ConsoleManager.java:262)
at org.eclipse.ui.internal.console.ConsoleManager.removeConsoles(ConsoleManager.java:244)
at org.eclipse.ui.console.ConsolePlugin.stop(ConsolePlugin.java:175)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$3.run(BundleContextImpl.java:1050)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:1046)
at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:457)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:531)
at org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1104)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.decFWSL(StartLevelManager.java:655)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:312)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.shutdown(StartLevelManager.java:257)
at org.eclipse.osgi.framework.internal.core.SystemBundle.suspend(SystemBundle.java:236)
at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:678)
at org.eclipse.osgi.framework.internal.core.Framework.close(Framework.java:576)
at org.eclipse.osgi.framework.internal.core.OSGi.close(OSGi.java:41)
at org.eclipse.core.runtime.adaptor.EclipseStarter.shutdown(EclipseStarter.java:424)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:200)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
&nb.sp; at org.eclipse.equinox.launcher.Main.main(Main.java:1212).
FACT(s) (Environment):
Code compiles just fine by the AVM
Windows
OpenEdge 10.2A
OpenEdge 10.2B
CAUSE:
By default the Visual Designer uses the Class Cache when analyzing forms, rather than a test compile by the AVM, and the class cache, by default, is built from the Workspace.
FIX:
There is a preference that tells OE Architect to read classes, not only from the WorkSpace but also from PROPATH directories. This can be accessed through the following actions:
- Select Window -> Preferences
- Expand the OpenEdge Architect node
- Expand the Advanced node
- Select Class Cache
- Under the option "Limit scope of cache class information to:", select PROPATH
- Select Apply then OK
- Redefine the variable in the editor using Content Assist to find the class in its namespace and this will force the Class Cache to be updated