gvSIG bugs #3966
No se inicializan en el orden adecuado las dependencias de una libreria.
Status: | Closed | % Done: | 0% | |
---|---|---|---|---|
Priority: | Normal | Spent time: | - | |
Assignee: | Joaquín del Cerro Murciano | |||
Category: | - | |||
Target version: | 2.3.0-2414 (rev. org.gvsig.desktop-2.0.120) | |||
Severity: | Critical | Add-on version: | ||
gvSIG version: | 2.3.0 | Add-on build: | ||
gvSIG build: | 2413 | Add-on resolve version: | ||
Operative System: | Add-on resolve build: | |||
Keywords: | Proyecto: | |||
Has patch: | Hito: | |||
Add-on name: | Unknown |
Description
Se trata de un error dificil de relacionar con lo que el usuario ve.
Al arrancar presentaba en el log el mensaje:
INFO main org.gvsig.tools.library.AbstractLibrary - Can't postinitialize library 'org.gvsig.fmap.dal.store.jdbc.JDBCLibrary'. Error importing classes from file at line 36 column 87. Can't locate DynClass 'Persistence:DBResourceParameters. Look at the extends tag. at org.gvsig.tools.dynobject.impl.DynClassImportHelper.importDynClass(DynClassImportHelper.java:319) at org.gvsig.tools.dynobject.impl.DynClassImportHelper.importDefinitions(DynClassImportHelper.java:189) at org.gvsig.tools.dynobject.impl.DynClassImportHelper.importDefinitions(DynClassImportHelper.java:94) at org.gvsig.tools.dynobject.impl.DefaultDynObjectManager.importDynClassDefinitions(DefaultDynObjectManager.java:649) at org.gvsig.tools.persistence.impl.AbstractPersistenceManager.addDefinition(AbstractPersistenceManager.java:387) at org.gvsig.fmap.dal.store.db.DBHelper.registerParametersDefinition(DBHelper.java:49) at org.gvsig.fmap.dal.store.jdbc.JDBCLibrary.doPostInitialize(JDBCLibrary.java:61) at org.gvsig.tools.library.AbstractLibrary.postInitialize(AbstractLibrary.java:358) at org.gvsig.tools.library.AbstractLibrariesInitializer.initializeLibraries(AbstractLibrariesInitializer.java:252) at org.gvsig.tools.library.AbstractLibrariesInitializer.postInitialize(AbstractLibrariesInitializer.java:105) at org.gvsig.tools.library.AbstractLibrariesInitializer.fullInitialize(AbstractLibrariesInitializer.java:116) at org.gvsig.andami.Launcher.initializeLibraries(Launcher.java:783) at org.gvsig.andami.Launcher.doMain(Launcher.java:569) at org.gvsig.andami.Launcher.main(Launcher.java:394) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.gvsig.andamiupdater.Updater.launchApp(Updater.java:106) at org.gvsig.andamiupdater.Updater.main(Updater.java:68)
Despues de muchas vueltas he dado con el problema. Estaba en la ordenacion de las dependencias de DALLibrary:
- org.gvsig.timesupport.TimeSupportLibrary - org.gvsig.fmap.dal.DALLibrary (API of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.impl.DALDefaultImplLibrary (IMPL of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.jdbc.JDBCLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.postgresql.PostgreSQLLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.DALDbLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.resource.db.DBResourceLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.db.DBStoreLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.DALFileLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.dbf.DBFLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.csv.CSVLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.shp.SHPLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.memory.MemoryStoreLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.annotation.AnnotationLibrary (API of org.gvsig.annotation.AnnotationLibrary)
Podemos ver que intenta inicializar antes JDBCLibrary que DBResourceLibrary y DBStoreLibrary que son dependencias transitivas de ella. Siempre ignoraba las dependencias transitivas a la hora de ordenar los servicios de una libreria. Esto podia o no deribar en un error, ya que debido al azar estas podian quedar ordenadas correctamente o de forma que no se produjesen errores.
La correccion puede ocasionar que algunas otras cosas fallen, ya que ahora va a cambiar el orden en como se inicializaban las cosas, pero con la correccion parece que el orden es el indicado en las dependencias, y ahora es predecible.
Ahora por ejemplo, en lo que se refiera a DALLibrary genera:
- org.gvsig.metadata.lib.basic.impl.BasicMetadataLibrary (IMPL of org.gvsig.metadata.MetadataLibrary) - org.gvsig.fmap.dal.DALLibrary (API of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.impl.DALDefaultImplLibrary (IMPL of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.DALDbLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.resource.db.DBResourceLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.db.DBStoreLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.jdbc.JDBCLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.postgresql.PostgreSQLLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.DALFileLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.dbf.DBFLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.csv.CSVLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.shp.SHPLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.fmap.dal.store.memory.MemoryStoreLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary) - org.gvsig.annotation.AnnotationLibrary (API of org.gvsig.annotation.AnnotationLibrary)
El error este lo he detectado cuando iba a intentar corregir #3810, pero no se ti tiene o no que ver con el.
Related issues
Associated revisions
refs #3966, corregido el orden de las dependencias de un Library, no tenia en cuenta las dependencias transitivas para establecer el orden de inicializacion, estableciendose un orden de inicializacion aleatorio cuando estas existian.
History
#1 Updated by Joaquín del Cerro Murciano over 8 years ago
- Description updated (diff)
#2 Updated by Joaquín del Cerro Murciano over 8 years ago
- Target version set to 2.3.0-2414 (rev. org.gvsig.desktop-2.0.120)
#3 Updated by Joaquín del Cerro Murciano over 8 years ago
- Status changed from New to Fixed
#4 Updated by Joaquín del Cerro Murciano over 8 years ago
- Related to gvSIG bugs #3810: Error al cargar PostGIS added
#5 Updated by Álvaro Anguix over 8 years ago
- Status changed from Fixed to Closed