Eclipse tirar ClassNotFoundException a pesar que haber añadido el fichero adecuado Apache POI .jar?
-
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?
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:
- descargar todo el archivo jar en este enlace http://archive.apache.org/dist/poi/release/bin/poi-bin-3.9-20121203.zip
- 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 .
eso es todo, ya está hecho ..: D Por favor, hágamelo saber si esto soluciona el problema ..