-
-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NPE on newStreamingXlsx() or streamingXml = true #158
Comments
Hi Samuel, I'm afraid I can't replicate this in my environment. The test suite passes on Lucee 5.3.2.38-SNAPSHOT via CommandBox and it includes several calls to I'm using AdoptOpenJdk 1.8.0_202. Could it be something to do with your Docker setup? I'm afraid I've no experience with that. |
Possibly. We are using the Ortus commandbox images which are using OpenJDK. Let me see if I can reproduce a basic Docker setup example later. |
I've created a skeleton app that just has this library and Coldbox (though I also tried instantiating it without Wirebox just to eliminate that as a culprit; no difference). http://www.inleague.org/spreadsheet-npe.zip |
Sorry but as I say I'm not familiar with docker and don't have it set up. The tests all pass in a standard environment so it's most likely something to do with the docker set up, which I'm afraid I can't help with. I've marked this ticket as "help wanted" in case there are others who can offer any insight. |
The distinction is unlikely to be Docker but perhaps the JRE. In this case it's OpenJDK 8u181. You can forget Docker and just run it on any linux VM with that JRE. I packaged it in Docker because that's the least amount of work (there is no "Docker setup" ... that's the whole point; all the config is in the file in the zip) |
Could be the JRE but I'm using OpenJDK too and not seeing problems, albeit with a slightly later version. I was using Oracle 8u181 without issue too. Sorry I'm not au fait with Linux either - Windows only I'm afraid. |
PS: By "docker set up" I meant the environment that it's creating, not the config itself. Should have been clearer. |
Hi Samuel, this sounds like it might be relevant to your issue: https://dev.lucee.org/t/fixed-adoptopenjdk-and-fontconfig-error-ubuntu-18-04/5119 |
Tried this again with fontconfig installed and also get the same NPE as with |
@MordantWastrel Samuel, can I ask how you ended up dealing with this? I'm slowly moving into the Docker world and have now come up against the issue with the latest For me, adding |
We didn't - we just didn't use the streaming XLSX stuff. It's unlikely we're going to have the opportunity to dig into this in the near future, but the next time we're working on it we'll give that a shot! We also don't use alpine as much anymore in favor of ubuntu or debian-slim. |
OK, shame you've had to limit functionality. I saw that Jon C addressed your ticket for the fontconfig to be added to the commandbox image, but my testing seems to show that isn't sufficient. A font also has to be installed (hence I've also noticed that the upstream adoptium JDK project has apparently taken this on board recently with their Alpine images, which will hopefully make this go away as an issue at some point. I tried refreshing my I don't know if debian or ubuntu have the same issue, but presumably they could be fixed in the same way. |
I just tested the vanilla |
OpenJDK 8u181, Alpine Linux in Docker, Lucee 5.3.2.38-SNAPSHOT, lucee-spreadsheet 2.0.2.
Any call to
newStreamingXlsx()
or new() withstreamingXml=true
returns an NPE on this line in Spreadsheet.cfc:arguments.workbook.createSheet( JavaCast( "String", arguments.sheetName ) );
Stack trace:
`
java.lang.NullPointerException
Stacktrace | The Error Occurred in/app/modules/lucee-spreadsheet/Spreadsheet.cfc: line 647 645: arguments.sheetName = generateUniqueSheetName( arguments.workbook );646: if( !sheetExists( workbook=arguments.workbook, sheetName=arguments.sheetName ) ){647: arguments.workbook.createSheet( JavaCast( "String", arguments.sheetName ) );648: return;649: }called from /app/modules/lucee-spreadsheet/Spreadsheet.cfc: line 1100 called from /app/modules/lucee-spreadsheet/Spreadsheet.cfc: line 1114 called from /app/model/queryBuilder2/QueryBuilderDownloader.cfm: line 71
Java Stacktrace | lucee.runtime.exp.NativeException: java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264) at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219) at sun.awt.FontConfiguration.init(FontConfiguration.java:107) at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774) at sun.font.SunFontManager$2.run(SunFontManager.java:431) at java.security.AccessController.doPrivileged(Native Method) at sun.font.SunFontManager.(SunFontManager.java:376) at sun.awt.FcFontManager.(FcFontManager.java:35) at sun.awt.X11FontManager.(X11FontManager.java:57) 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 java.lang.Class.newInstance(Class.java:442) at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83) at java.security.AccessController.doPrivileged(Native Method) at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74) at java.awt.Font.getFont2D(Font.java:491) at java.awt.Font.canDisplayUpTo(Font.java:2060) at java.awt.font.TextLayout.singleFont(TextLayout.java:470) at java.awt.font.TextLayout.(TextLayout.java:531) at org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:273) at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.(AutoSizeColumnTracker.java:117) at org.apache.poi.xssf.streaming.SXSSFSheet.(SXSSFSheet.java:82) at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:664) at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:685) 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 lucee.runtime.reflection.pairs.MethodInstance.invoke(MethodInstance.java:56) at lucee.runtime.reflection.Reflector.callMethod(Reflector.java:877) at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:810) at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1706) at modules.lucee_spreadsheet270.spreadsheet_cfc$cf.udfCall3(/modules/lucee-spreadsheet/Spreadsheet.cfc:647) at modules.lucee_spreadsheet270.spreadsheet_cfc$cf.udfCall(/modules/lucee-spreadsheet/Spreadsheet.cfc) at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:106) at lucee.runtime.type.UDFImpl._call(UDFImpl.java:342) at lucee.runtime.type.UDFImpl.call(UDFImpl.java:215) at lucee.runtime.type.scope.UndefinedImpl.call(UndefinedImpl.java:766) at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:767) at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1706) at modules.lucee_spreadsheet270.spreadsheet_cfc$cf.udfCall6(/modules/lucee-spreadsheet/Spreadsheet.cfc:1100) at modules.lucee_spreadsheet270.spreadsheet_cfc$cf.udfCall(/modules/lucee-spreadsheet/Spreadsheet.cfc) at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:106) at lucee.runtime.type.UDFImpl._call(UDFImpl.java:342) at lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:205) at lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:779) at lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:845) at lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1725) at modules.lucee_spreadsheet270.spreadsheet_cfc$cf.udfCall7(/modules/lucee-spreadsheet/Spreadsheet.cfc:1114) at modules.lucee_spreadsheet270.spreadsheet_cfc$cf.udfCall(/modules/lucee-spreadsheet/Spreadsheet.cfc) at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:106) at lucee.runtime.type.UDFImpl._call(UDFImpl.java:342) at lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:205) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:678) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:565) at lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:1946) at lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:845) at lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1725) at model.querybuilder2.querybuilderdownloader_cfm$cf.call(/model/queryBuilder2/QueryBuilderDownloader.cfm:71) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:941) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:833) at lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:216) at lucee.runtime.listener.ModernAppListener.onRequest(ModernAppListener.java:104) at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2408) at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2398) at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2373) at lucee.runtime.engine.Request.exe(Request.java:43) at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1045) at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:991) at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97) at lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) at org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64) at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132) at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292) at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81) at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138) at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272) at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104) at io.undertow.server.Connectors.executeRootHandler(Connectors.java:336) at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException
`
The text was updated successfully, but these errors were encountered: