Eclipse tirar ClassNotFoundException a pesar que haber añadido el fichero adecuado Apache POI .jar?

StackOverflow https://stackoverflow.com/questions/1794199

  •  22-09-2019
  •  | 
  •  

Pregunta

Estoy usando un servlet para subir archivos (hojas de cálculo Excel) .xls al servidor. Estoy usando la API de Apache FileUpload para la parte de carga de la lógica de negocio, para asegurar capear esta parte está trabajando, he intentado con éxito la posibilidad de subir un archivo .txt al servlet después de lo cual - la API de Apache FileUpload, desde el lado de servlets me da una InputStream de la que imprimir todos los contenidos de la .txt en la consola.

La parte que no funciona es, cuando, intento de usar que InputStream y lo remitirá a un método en el que, escaneo del archivo subido por el usuario .xls e imprimirla en la consola. La excepción es lanzada es:

java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.WorkbookFactory

Esto ocurre a pesar que haber añadido tanto, poi-3.5-FINAL-20090928.jar y poi-ooxml-3.5-FINAL-20090928.jar a la ruta de generación de proyecto Java. Cabe mencionar que este último archivo contiene la clase WorkbookFactory.

Sin embargo, cuando traté de escanear un archivo .xls que estaba presente localmente en el disco duro, de la que deriva el InputStream y hacia adelante que para imprimir todas las células del .xls, imprime las celdas de cada fila y columnas sin problemas en la consola. ¿Soluciones?

¿Fue útil?

Solución

Usted está utilizando Apache Commons FileUpload que de este modo implica que usted está utilizando una aplicación web. ¿Usted coloca las bibliotecas en la carpeta de la aplicación web /WEB-INF/lib como normalmente debe hacer por cualquier bibliotecas 3 ª parte? Usted no necesita hacer nada con el Proyecto de Java Build Path. Eclipse automágicamente tomar ninguna biblioteca en /WEB-INF/lib en el BuildPath y la aplicación web, una vez desplegado, será por defecto tomar esas bibliotecas en la ruta de clase.

Si eso no ayuda, y luego asegurarse de que usted no tiene otro lugar una versión anterior de PDI en la ruta de clase que puede coillide en la carga de clases. Esto incluye, aparte de /WEB-INF/lib de la aplicación web en cada /lib del servidor de aplicaciones (y tal vez otros, dependiendo de la marca / versión / configuración, consulte la documentación para más detalles) y /lib del JRE. Si hay versiones más antiguas de puntos de interés en ese país, es necesario eliminar primero. En realidad, esas carpetas no deben contener ninguna biblioteca webapp-específicos tercio del partido, sólo sería saturar la ruta de clase.

Otros consejos

La solución para esto es muy simple:

  1. descargar todo el archivo jar en este enlace http://archive.apache.org/dist/poi/release/bin/poi-bin-3.9-20121203.zip
  2. extraer el archivo y copiar todo el archivo jar a "\ WebContent \ WEB-INF \ lib \" en su proyecto. Nota: Usted debe copiar y pegar la derecha por su proyecto en ECLIPSE, no copiar y pegar a través de Windows Explorer o el lugar como JAR externo en Java Build Path, porque nunca funciona
  3. .

eso es todo, ya está hecho ..: D Por favor, hágamelo saber si esto soluciona el problema ..

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top