comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[SOLUCIONADO] Problema con JAXB

  • 5 Respuestas
  • 2097 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado coke951

  • *
  • Underc0der
  • Mensajes: 38
  • Actividad:
    1.67%
  • Reputación 0
    • Ver Perfil
  • Skype: Cok3951
« en: Julio 07, 2015, 11:05:18 pm »
Que tal, tengo un pequeño problema, no se si realmente estoy aplicando bien JAXB, lo que me gustaria hacer es guardar un objeto de tipo Producto, el cual tiene nombre, codigo, precio, cantidad etc... lo que hago es guardar todos los productos es un List, y despues intentar utilizar JAXB para guardar dicha lista de productos para cuando vuelva a iniciar el programa, cargarlos.

Esta es mi clase ProductoListWraper el cual se encarga de juntar los productos en una lista

Código: Java
  1. import java.util.List;
  2.  
  3. import javax.xml.bind.annotation.XmlElement;
  4. import javax.xml.bind.annotation.XmlRootElement;
  5.  
  6. @XmlRootElement(name = "productos")
  7. public class ProductoListWrapper {
  8.        
  9.         private List<Producto> productos;
  10.        
  11.         @XmlElement(name = "producto")
  12.         public List<Producto> obtenerProductos(){
  13.                 return productos;
  14.         }
  15.        
  16.         public void setProductos(List<Producto> productos){
  17.                 this.productos = productos;
  18.         }
  19. }
  20.  
  21.  

Después tengo los métodos los cuales se encargan de guardar dicha lista en un xml:

Código: Java
  1.         public void guardarInformacionProductosDesdeArchivo(No tienes permisos para ver links. Registrate o Entra con tu cuenta file){
  2.                 try{
  3.                         JAXBContext context = JAXBContext.newInstance(ProductoListWrapper.class);
  4.                         Marshaller m = context.createMarshaller();
  5.                         m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
  6.                        
  7.                        
  8.                         ProductoListWrapper wrapper = new ProductoListWrapper();
  9.                         wrapper.setProductos(productoInfo);
  10.                        
  11.                        
  12.                         m.marshal(wrapper, file);
  13.                        
  14.                        
  15.                         setURLPuntoVentaApp(file);
  16.                 }catch(No tienes permisos para ver links. Registrate o Entra con tu cuenta e){
  17.                         Dialogs.create()
  18.                                 .title("Error")
  19.                                 .masthead("No pudo ser posible guardar la infomracion en el archivo: "+file.getPath())
  20.                                 .showException(e);
  21.                 }
  22.         }
  23.  

Este método recibe un objeto de tipo File como atributo, y es que tengo otro método "setURLPuntoVentaApp" el cual sirve para guardar en un registro la ruta del archivo para que cuando vuelva a abrir el programa, cargue este xml automáticamente y "m.marshal(wrapper, file);" que me gustaría explicarlo, pero no tengo ni puta idea  :-X

El error surge cuando intento guardar el .xml

Este es el error que me sale:
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
La anotación JAXB está colocada en un método que no es una propiedad de JAXB
this problem is related to the following location:
at @javax.xml.bind.annotation.XmlElement(name=producto, namespace=##default, type=class javax.xml.bind.annotation.XmlElement$DEFAULT, defaultValue=, required=false, nillable=false)
at puntoVenta.modelo.ProductoListWrapper

at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:91)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:445)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:277)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:124)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1123)
at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:147)
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 javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:247)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:234)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:462)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
at puntoVenta.PuntoVentaApp.guardarInformacionProductosDesdeArchivo(PuntoVentaApp.java:144)
at puntoVenta.vista.LayoutRaizControlador.handleGuardarEn(LayoutRaizControlador.java:69)
at puntoVenta.vista.LayoutRaizControlador.handleGuardar(LayoutRaizControlador.java:49)
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 sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1767)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1653)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.control.MenuItem.fire(MenuItem.java:462)
at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1405)
at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$341(ContextMenuContent.java:1358)
at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer$$Lambda$343/1199140532.handle(Unknown Source)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3758)
at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3486)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2495)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:350)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$350(GlassViewEventHandler.java:385)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$327/1712109139.get(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:404)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:384)
at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
at com.sun.glass.ui.View.notifyMouse(View.java:927)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$145(WinApplication.java:101)
at com.sun.glass.ui.win.WinApplication$$Lambda$36/2117255219.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)

Tiene que ver algo sobre la anotación, pero estoy viendo en internet un ejemplo, y no logro detectar el problema..

Espero que me puedan ayudar, si necesitan que suba otro código para solucionar este problema, me avisan.

Gracias de antemano, Saludos!
« Última modificación: Julio 07, 2015, 11:47:52 pm por Gabriela »

Desconectado ~ Yoya ~

  • *
  • Underc0der
  • Mensajes: 152
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #1 en: Julio 07, 2015, 11:24:26 pm »
La clase Producto, tiene la anotacion XmlRootElement?
De lo contrario agrégasela, luego intenta de nuevo y nos cuentas.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Conectado coke951

  • *
  • Underc0der
  • Mensajes: 38
  • Actividad:
    1.67%
  • Reputación 0
    • Ver Perfil
  • Skype: Cok3951
« Respuesta #2 en: Julio 07, 2015, 11:27:31 pm »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
La clase Producto, tiene la anotacion XmlRootElement?
De lo contrario agrégasela, luego intenta de nuevo y nos cuentas.

Saludos.

Sip, y me da problemas.
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
...

@XmlRootElement(name = "productos")
public class ProductoListWrapper {
       
        private List<Pro.....

¿a eso te refieres?

Desconectado Gus Garsaky

  • *
  • Underc0der
  • Mensajes: 93
  • Actividad:
    0%
  • Reputación -1
    • Ver Perfil
  • Skype: gus.garsaky
« Respuesta #3 en: Julio 07, 2015, 11:31:32 pm »
Si no me equivoco, JAXB trabaja en base a getter/setter. Debes respetar ésta regla. Tu código debería ser:

Código: Java
  1. @XmlRootElement(name = "productos")
  2. public class ProductoListWrapper {
  3.     private List<Producto> productos;
  4.  
  5.     @XmlElement(name = "producto")
  6.     public List<Producto> getProductos(){ // siempre usa get/set
  7.         return productos;
  8.     }    
  9.     public void setProductos(List<Producto> productos){
  10.         this.productos = productos;
  11.     }
  12. }

Fíjate que estoy usando getProductos. Esto es importantísimo en el mundo Java, muchas cosas en Java trabajan en base a esto, como por ejemplo Java Server Faces y JAXB, entre otras.
« Última modificación: Julio 07, 2015, 11:39:09 pm por Gus Garsaky »

Conectado coke951

  • *
  • Underc0der
  • Mensajes: 38
  • Actividad:
    1.67%
  • Reputación 0
    • Ver Perfil
  • Skype: Cok3951
« Respuesta #4 en: Julio 07, 2015, 11:37:04 pm »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Si no me equivoco, JAXB trabaja en base a getter/setter. Debes respetar ésta regla. Tu código debería ser:

Código: Java
  1. @XmlRootElement(name = "productos")
  2. public class ProductoListWrapper {
  3.     private List<Producto> productos;
  4.  
  5.     @XmlElement(name = "producto")
  6.     public List<Producto> getProductos(){ // siempre usa get/set
  7.         return productos;
  8.     }    
  9.     public void setProductos(List<Producto> productos){
  10.         this.productos = productos;
  11.     }
  12. }

Fíjate que estoy usando getProductos. Esto es importantísimo en el mundo Java, muchas cosas en Java trabajan en base a esto, como por ejemplo Java Server Faces y JAXB, entre otras.

Perfecto, eso era, no creí que influyera, JAXB es nuevo para mi, tendre que investigar mas. Muchas gracias Gus!

Desconectado Gus Garsaky

  • *
  • Underc0der
  • Mensajes: 93
  • Actividad:
    0%
  • Reputación -1
    • Ver Perfil
  • Skype: gus.garsaky
« Respuesta #5 en: Julio 07, 2015, 11:39:45 pm »
De nada coke, me alegra que hayas resuelto tu duda.

Saludos,

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 7750
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 1651
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 2236
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 3027
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 3488
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon