2013-03-21 6 views
0

Я искал эту проблему часами, но предоставленные решения не сработали. Я работаю в Intellij IDEA 12.0.4, пытаясь прочитать файл xlsx Microsoft 2007. Ошибка я получаю это:не может прочитать файл xlsx с помощью apache poi

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException 
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:91) 
    at Main.main(Main.java:157) 
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 

Код:

import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.ss.usermodel.Sheet; 
import org.apache.poi.ss.usermodel.Workbook; 
import org.apache.poi.ss.usermodel.WorkbookFactory; 
import org.w3c.dom.Document; 
import org.w3c.dom.NodeList; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import java.io.File; 
import java.util.Iterator; 

public class Main { 
    public static void main(String[] args) { 
     try { 

      File file = new File(root_dir + "2013-03-13 iom diff.xlsx"); 
      Workbook workbook = WorkbookFactory.create(file); //fails here 

      //... 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

В IDEA У меня есть следующие параметры проекта:

modsource projdepen projpath projlib projstruct

У меня нет грани или артефактов и в настройках платформы в IDEA У меня нет глобальных библиотек. В разделе Параметры платформы у меня есть следующие SDKs: sdkclasspath sdkannotations sdksrcpath

Я на ОС Windows 7 SP1 x64 и под System Properties -> Environment Variables у меня есть: Под система variables-> CLASSPATH:

C:\xmlbeans-2.5.0\lib\xbean.jar;C:\xmlbeans-2.5.0\lib\jsr173_1.0_api.jar

Под системные переменные-> Путь:

...;%XMLBEANS_HOME%\bin;C:\poi-3.9\ooxml-lib\xmlbeans-2.3.0.jar;C:\poi-3.9\ooxml-lib\stax-api-1.0.1.jar;C:\poi-3.9\ooxml-lib\xmlbeans-2.3.0 где XMLBEANS_HOME определяется под переменными, так как C:\xmlbeans-2.5.0 и ... обозначает другие несвязанные файлы.

Я также установлены следующие компоненты, насколько Java идет:

Java 7 Update 17 
Java 7 Update 17 (64-bit) 
Java SE Development Kit 7 Update 17 
Java SE Development Kit 7 Update 17 (64-bit) 

Явное мой вопрос «Как загрузить файл XLSX с помощью Apache POI, когда я получаю эту ошибку» Любая помощь очень ценится.

+0

Почему вы используете источники для xmlbeans, а не скомпилированную банку? –

+0

У меня есть оба параметра Path. Я попытался удалить источники из переменной пути и по-прежнему иметь ту же ошибку. (Я закрыл и снова открыл IDEA) – thed0ctor

+0

XSSFWorkbook workBook = новый XSSFWorkbook (inputStream); – swamy

ответ

0

я заметил, что я не сохранить файл первенствовать как OOXLM XLSX но экономия, как только нормальный XLSX, который я считаю была частью проблемы. Оба имеют одинаковое расширение, поэтому я полагаю, что это легко сделать. Я просмотрел вывод компилятора, и в самом верху он перечислил банки в используемом классе. Однако, похоже, Intellij IDEA 12 не использует classpath системы, а скорее проект. Я добавил каталоги в путь к классам в проекте (перейдя на Project Structure->Dependencies->, а затем щелкнув значок +, чтобы добавить банки или каталоги), но правильные файлы jar не вызывались (я мог бы сказать из первых строк вывода из компилятор). Я искал каталог проекта в .idea->libraries и обнаружил файлы конфигурации xml для путей к каталогам, которые я добавил на вкладке зависимостей, которые должны содержать файлы jar, необходимые для запуска программы.Я открыл один из XML-файлов и увидел это:

<component name="libraryTable"> 
    <library name="poi-3"> 
    <CLASSES> 
     <root url="file://C:/poi-3.9" /> 
    </CLASSES> 
    <JAVADOC> 
     <root url="file://C:/poi-3.9/docs/apidocs" /> 
    </JAVADOC> 
    <SOURCES /> 
    <jarDirectory url="file://C:/poi-3.9" recursive="false" /> 
    </library> 
</component> 

Затем я изменил recursive к истине, так что прочитать

<component name="libraryTable"> 
    <library name="poi-3"> 
    <CLASSES> 
     <root url="file://C:/poi-3.9" /> 
    </CLASSES> 
    <JAVADOC> 
     <root url="file://C:/poi-3.9/docs/apidocs" /> 
    </JAVADOC> 
    <SOURCES /> 
    <jarDirectory url="file://C:/poi-3.9" recursive="true" /> 
    </library> 
</component> 

Это снимало эту ошибку (but now I'm getting a nullPointer exception). Просто хотел поделиться тем, что это поможет любому, кто использует одну и ту же IDE в будущем.

Смежные вопросы