Reputation: 347
I am using the latest version of Apache POI at this moment which is 4.1.1. Every thing is working fine for xls file. Even for xlsx file in development environment Windows. But I am getting exception in live environment Red Hat Linux.
I have already searched for solutions mostly said to use proper xmlbeans dependency. I am using xml-beans-3.1.0.jar.
I am exporting the war file from eclipse and publishing in oracle web-logic 12c.
Here's the stack trace:
org.apache.poi.ooxml.POIXMLException: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:66)
at org.apache.poi.ooxml.POIXMLDocumentPart.read(POIXMLDocumentPart.java:657)
at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:180)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:282)
at org.apache.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook(XSSFWorkbookFactory.java:88)
at org.apache.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook(XSSFWorkbookFactory.java:135)
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:498)
at org.apache.poi.ss.usermodel.WorkbookFactory.createWorkbook(WorkbookFactory.java:341)
at org.apache.poi.ss.usermodel.WorkbookFactory.createXSSFWorkbook(WorkbookFactory.java:316)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:234)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:200)
...............................................................................
...............................................................................
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56)
at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:63)
... 181 more
Caused by: java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
at org.apache.poi.ooxml.POIXMLTypeLoader.<clinit>(POIXMLTypeLoader.java:43)
at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:86)
... 187 more
Here is the full library list I have used:
activation-1.1.1.jar
antlr-2.7.7.jar
aopalliance-1.0.jar
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
axis.jar
commons-beanutils-1.9.2.jar
commons-codec-1.13.jar
commons-collections-3.2.2.jar
commons-collections4-4.4.jar
commons-compress-1.19.jar
commons-dbcp-1.3.jar
commons-digester-2.1.jar
commons-discovery.jar
commons-fileupload-1.3.1.jar
commons-io-2.4.jar
commons-lang-2.4.jar
commons-lang3-3.9.jar
commons-logging-1.1.3.jar
commons-math3-3.6.1.jar
commons-pool-1.5.6.jar
commons-validator-1.4.0.jar
core-3.1.0.jar
curvesapi-1.06.jar
datatables-core-0.9.3.jar
datatables-jsp-0.9.3.jar
datatables-servlet2-0.9.3.jar
displaytag-1.2.jar
dom4j-1.6.1.jar
dynaHandlers.jar
freemarker-2.3.23.jar
gson-2.6.2.jar
hamcrest-core-1.1.jar
hibernate-commons-annotations-4.0.5.Final.jar
hibernate-core-4.3.11.Final.jar
hibernate-entitymanager-4.3.11.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
httpclient-4.5.2.jar
httpcore-4.4.4.jar
iText-5.0.4.jar
jackson-core-asl-1.8.3.jar
jackson-jaxrs-1.8.3.jar
jackson-mapper-asl-1.8.3.jar
jackson-xc-1.8.3.jar
jandex-1.1.0.Final.jar
java-json.jar
javase-3.1.0.jar
javassist-3.20.0-GA.jar
javax.servlet-api-3.1.0.jar
javax.servlet.jsp-api-2.3.1.jar
javax.wsdl.jar
jaxrpc-api.jar
jboss-logging-3.1.3.GA.jar
jcl-over-slf4j-1.7.6.jar
jersey-client-1.9.jar
jersey-core-1.9.jar
jersey-json-1.9.jar
jersey-multipart-1.9.jar
jersey-server-1.9.jar
jsch-0.1.53.jar
json-lib-2.3-jdk15.jar
json-simple-1.1.1.jar
jstl-1.0.6.jar
jta-1.1.jar
juli-6.0.18.jar
junit-4.10.jar
log4j-api-2.3.jar
log4j-core-2.3.jar
log4j-web-2.3.jar
mail.jar
ognl-3.1.4.jar
ojdbc6.jar
opencsv-2.3.jar
org.apache.felix.framework-4.0.3.jar
org.apache.felix.main-4.0.3.jar
org.apache.felix.shell-1.4.3.jar
org.apache.felix.shell.tui-1.4.1.jar
org.osgi.compendium-4.0.0.jar
org.osgi.core-4.1.0.jar
oval-1.31.jar
plexus-container-default-1.0-alpha-10.jar
plexus-utils-1.2.jar
poi-4.1.1.jar
poi-excelant-4.1.1.jar
poi-ooxml-4.1.1.jar
poi-ooxml-schemas-4.1.1.jar
poi-scratchpad-4.1.1.jar
servlet-api-2.5.jar
sitemesh-2.4.2.jar
slf4j-api-1.7.12.jar
SMSClient.jar
spring-aop-4.1.6.RELEASE.jar
spring-beans-4.1.6.RELEASE.jar
spring-context-4.1.6.RELEASE.jar
spring-core-4.1.6.RELEASE.jar
spring-expression-4.1.6.RELEASE.jar
spring-jdbc-4.1.6.RELEASE.jar
spring-orm-4.1.6.RELEASE.jar
spring-test-4.1.6.RELEASE.jar
spring-tx-4.1.6.RELEASE.jar
spring-web-4.1.6.RELEASE.jar
standard-1.0.6.jar
standard.jar
struts-menu-2.4.3.jar
struts2-core-2.5.jar
struts2-jquery-plugin-3.7.1.jar
struts2-jquery-tree-plugin-3.7.1.jar
struts2-json-plugin-2.5.jar
struts2-sitemesh-plugin-2.5.jar
tiles-api-3.0.5.jar
tiles-core-3.0.5.jar
tiles-jsp-3.0.5.jar
validation-api-1.1.0.Final.jar
velocity-1.4.jar
velocity-tools-view-1.0.jar
xml-apis-1.0.b2.jar
xmlbeans-3.1.0.jar
xmlpserver.jar
xmlpull-1.1.3.1.jar
xpp3_min-1.1.4c.jar
xstream-1.4.8.jar
Upvotes: 2
Views: 1940
Reputation: 21
I got around this error by setting this in weblogic.xml:
<container-descriptor>
<prefer-application-packages>
<package-name>org.apache.*</package-name>
</prefer-application-packages>
</container-descriptor>
Weblogic 12c has an old version(2.0) of XMLBeans!
Upvotes: 2
Reputation: 61852
According to
Caused by: java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
I suspect your class org.apache.xmlbeans.XmlOptions
came not really from xmlbeans-3.1.0.jar
but from any other library which possibly includes an old version of org.apache.xmlbeans.*
.
You could detect where the class came from using folowing code:
ClassLoader classloader =
org.apache.xmlbeans.XmlOptions.class.getClassLoader();
java.net.URL res = classloader.getResource(
"org/apache/xmlbeans/XmlOptions.class");
String path = res.getPath();
System.out.println("XmlOptions came from " + path);
Upvotes: 1