Foros del Web » Programación para mayores de 30 ;) » Java »

Usar la API de facturae 2.0 en formato 3.2

Estas en el tema de Usar la API de facturae 2.0 en formato 3.2 en el foro de Java en Foros del Web. Buenos días, estoy intentando utilizar la API del ministerio (http://www.facturae.es/es-ES/Descargas/DescargasDesarrollo/Paginas/APIJava2.aspx) y me esta costando bastante. Mi primer objetivo es a partir de los datos entrados ...
  #1 (permalink)  
Antiguo 11/07/2012, 08:48
 
Fecha de Ingreso: octubre-2007
Mensajes: 6
Antigüedad: 16 años, 6 meses
Puntos: 0
Usar la API de facturae 2.0 en formato 3.2

Buenos días,

estoy intentando utilizar la API del ministerio (http://www.facturae.es/es-ES/Descargas/DescargasDesarrollo/Paginas/APIJava2.aspx)

y me esta costando bastante.

Mi primer objetivo es a partir de los datos entrados en el objeto generar una factura XML.

Este es mi código se base casi identicamente al que da de ejemplo en la documentación de la API. Lo he probado desde una máquina linux con NetBeans como en windows 7 con Eclipse y me lanza los mismos errrores.

Código:
package FacturaElectronica;

import es.mityc.facturae.*;

import java.io.*;
import java.util.*;
import java.lang.*;



public class FacturaElectronica {

public static void main(String[] args) throws es.mityc.facturae.utils.MarshalException {
	
	es.mityc.facturae32.Facturae facturae32Object = new es.mityc.facturae32.Facturae();
	es.mityc.facturae32.FileHeaderType cabecera32Object = new es.mityc.facturae32.FileHeaderType();
	String schemaVersion="3.2";
	cabecera32Object.setSchemaVersion(schemaVersion);
	facturae32Object.setFileHeader(cabecera32Object);
	es.mityc.facturae.utils.MarshallerUtil marshallerUtil32= es.mityc.facturae.utils.MarshallerUtil.getInstance(FacturaeVersion.FACTURAE_32);
	 marshallerUtil32.marshal(facturae32Object, "resultat");
	
}
}

Código:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/xml/bind/marshaller/NamespacePrefixMapper
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.access$100(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at es.mityc.facturae.utils.MarshallerUtil.<init>(MarshallerUtil.java:140)
	at es.mityc.facturae.utils.MarshallerUtil.getInstanceFacturae32(MarshallerUtil.java:111)
	at es.mityc.facturae.utils.MarshallerUtil.getInstance(MarshallerUtil.java:74)
	at FacturaElectronica.FacturaElectronica.main(FacturaElectronica.java:20)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.marshaller.NamespacePrefixMapper
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 16 more

Ya llevo algunas horas con ello, y es un poquito desesperante. No he visto otra gente por la red que utilice estas APIs más que para firmar un documento XML ya creado.

La documentación adjunta a la API es casi testimonial. Alguien ve el error o tiene algun ejemplo tipo "hello world" sobre los pasos mínimos para crear un XML con esas APIs?.

Gracias
  #2 (permalink)  
Antiguo 11/07/2012, 14:09
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Usar la API de facturae 2.0 en formato 3.2

Al parecer es un problema de la API

http://code.google.com/p/javaapifork...s/detail?id=28

Cita:
Java 6 includes a JAXB implementation which is not JAXB RI so if you want to rely on a JAXB RI specific feature you should bundle it.
Es un problema de versiones

En caso de que no te sirvan, si solo pretendes crear un xml, puedes conseguir uno de ejemplo y montar su propio marshaller.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 11/07/2012, 23:55
 
Fecha de Ingreso: octubre-2007
Mensajes: 6
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Usar la API de facturae 2.0 en formato 3.2

Gracias por la información!

si encuentro algo os lo hago saber.
  #4 (permalink)  
Antiguo 12/07/2012, 00:59
 
Fecha de Ingreso: octubre-2007
Mensajes: 6
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Usar la API de facturae 2.0 en formato 3.2

Tio te pondre un piso!

era eso, me has ahorrado mucho tiempo.

he seguido estos pasos de la página del bug

I downloaded the zip file from http://jaxb.java.net/ but it doesn't work with me when I double-click, so I had to download it manually as follows:
you need 2 jar files so it will work successfully.
1-jaxb-impl-2.2.jar
http://repository.jboss.org/maven2/sun-jaxb/jaxb-impl/2.2/
2-jaxb-xjc-2.2-sources.jar
http://repository.jboss.org/maven2/sun-jaxb/jaxb-xjc/2.2/

hope that will help.


Gracias
  #5 (permalink)  
Antiguo 12/07/2012, 02:11
 
Fecha de Ingreso: octubre-2007
Mensajes: 6
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Usar la API de facturae 2.0 en formato 3.2

Por si le sirve a alguien hay que poner las siguientes librerias para que funcione el tema

Facturae-API-2.0.jar
jaxb-impl-2.2.5-SNAPSHOT.jar
jaxb-xjc-2.2.5-SNAPSHOT.jar
JAXB2_20120516.jar
commons-loggin-1.1.1-javadoc.jar
commons-loggin-1.1.1-sources.jar
commons-loggin-1.1.1.jar
commons-loggin-adapters-1.1.1.jar
commons-loggin-api-1.1.1.jar
commons-loggin-tests.jar
log4j-1.2.9.jar

Etiquetas: api, formato, netbeans, string, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:21.