IE 11 error in Vaadin 13

A customer is getting this error in their Maven Build.


HTTP ERROR 500
Problem accessing /dashboardiq-webapp/home. Reason:

Server Error
Caused by:
javax.servlet.ServletException: org.eclipse.jetty.servlet.ServletHolder$1: java.lang.IllegalArgumentException: Failed to find the bundle manifest file 'frontend://vaadin-flow-bundle-manifest.json' in the servlet context for 'ES6' browsers. If you are running a dev-mode servlet container in maven e.g. `jetty:run` change it to `jetty:run-exploded`. If you are not compiling frontend resources, include the 'vaadin-maven-plugin' in your build script. Otherwise, you can skip this error either by disabling production mode, or by setting the servlet parameter 'original.frontend.resources=true'.
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.Server.handle(Server.java:531)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.eclipse.jetty.servlet.ServletHolder$1: java.lang.IllegalArgumentException: Failed to find the bundle manifest file 'frontend://vaadin-flow-bundle-manifest.json' in the servlet context for 'ES6' browsers. If you are running a dev-mode servlet container in maven e.g. `jetty:run` change it to `jetty:run-exploded`. If you are not compiling frontend resources, include the 'vaadin-maven-plugin' in your build script. Otherwise, you can skip this error either by disabling production mode, or by setting the servlet parameter 'original.frontend.resources=true'.
        at org.eclipse.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java:629)
        at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:688)
        at org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:519)
        at org.eclipse.jetty.servlet.ServletHolder.prepare(ServletHolder.java:803)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:530)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.Server.handle(Server.java:531)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
        ... 3 more
Caused by: java.lang.IllegalArgumentException: Failed to find the bundle manifest file 'frontend://vaadin-flow-bundle-manifest.json' in the servlet context for 'ES6' browsers. If you are running a dev-mode servlet container in maven e.g. `jetty:run` change it to `jetty:run-exploded`. If you are not compiling frontend resources, include the 'vaadin-maven-plugin' in your build script. Otherwise, you can skip this error either by disabling production mode, or by setting the servlet parameter 'original.frontend.resources=true'.
        at com.vaadin.flow.server.startup.BundleFilterFactory.readBundleManifest(BundleFilterFactory.java:89)
        at com.vaadin.flow.server.startup.BundleFilterFactory.createBundleFilterForBrowser(BundleFilterFactory.java:79)
        at com.vaadin.flow.server.startup.BundleFilterFactory.createFilters(BundleFilterFactory.java:70)
        at com.vaadin.flow.server.VaadinService.init(VaadinService.java:275)
        at com.vaadin.flow.server.VaadinServlet.createServletService(VaadinServlet.java:201)
        at com.vaadin.flow.server.VaadinServlet.createServletService(VaadinServlet.java:182)
        at com.vaadin.flow.server.VaadinServlet.init(VaadinServlet.java:72)
        at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:670)
        ... 28 more
Caused by:
org.eclipse.jetty.servlet.ServletHolder$1: java.lang.IllegalArgumentException: Failed to find the bundle manifest file 'frontend://vaadin-flow-bundle-manifest.json' in the servlet context for 'ES6' browsers. If you are running a dev-mode servlet container in maven e.g. `jetty:run` change it to `jetty:run-exploded`. If you are not compiling frontend resources, include the 'vaadin-maven-plugin' in your build script. Otherwise, you can skip this error either by disabling production mode, or by setting the servlet parameter 'original.frontend.resources=true'.
        at org.eclipse.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java:629)
        at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:688)
        at org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:519)
        at org.eclipse.jetty.servlet.ServletHolder.prepare(ServletHolder.java:803)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:530)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.Server.handle(Server.java:531)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: Failed to find the bundle manifest file 'frontend://vaadin-flow-bundle-manifest.json' in the servlet context for 'ES6' browsers. If you are running a dev-mode servlet container in maven e.g. `jetty:run` change it to `jetty:run-exploded`. If you are not compiling frontend resources, include the 'vaadin-maven-plugin' in your build script. Otherwise, you can skip this error either by disabling production mode, or by setting the servlet parameter 'original.frontend.resources=true'.
        at com.vaadin.flow.server.startup.BundleFilterFactory.readBundleManifest(BundleFilterFactory.java:89)
        at com.vaadin.flow.server.startup.BundleFilterFactory.createBundleFilterForBrowser(BundleFilterFactory.java:79)
        at com.vaadin.flow.server.startup.BundleFilterFactory.createFilters(BundleFilterFactory.java:70)
        at com.vaadin.flow.server.VaadinService.init(VaadinService.java:275)
        at com.vaadin.flow.server.VaadinServlet.createServletService(VaadinServlet.java:201)
        at com.vaadin.flow.server.VaadinServlet.createServletService(VaadinServlet.java:182)
        at com.vaadin.flow.server.VaadinServlet.init(VaadinServlet.java:72)
        at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:670)
        ... 28 more
Caused by:
java.lang.IllegalArgumentException: Failed to find the bundle manifest file 'frontend://vaadin-flow-bundle-manifest.json' in the servlet context for 'ES6' browsers. If you are running a dev-mode servlet container in maven e.g. `jetty:run` change it to `jetty:run-exploded`. If you are not compiling frontend resources, include the 'vaadin-maven-plugin' in your build script. Otherwise, you can skip this error either by disabling production mode, or by setting the servlet parameter 'original.frontend.resources=true'.
        at com.vaadin.flow.server.startup.BundleFilterFactory.readBundleManifest(BundleFilterFactory.java:89)
        at com.vaadin.flow.server.startup.BundleFilterFactory.createBundleFilterForBrowser(BundleFilterFactory.java:79)
        at com.vaadin.flow.server.startup.BundleFilterFactory.createFilters(BundleFilterFactory.java:70)
        at com.vaadin.flow.server.VaadinService.init(VaadinService.java:275)
        at com.vaadin.flow.server.VaadinServlet.createServletService(VaadinServlet.java:201)
        at com.vaadin.flow.server.VaadinServlet.createServletService(VaadinServlet.java:182)
        at com.vaadin.flow.server.VaadinServlet.init(VaadinServlet.java:72)
        at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:670)
        at org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:519)
        at org.eclipse.jetty.servlet.ServletHolder.prepare(ServletHolder.java:803)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:530)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.Server.handle(Server.java:531)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)
        at java.lang.Thread.run(Thread.java:748)

Powered by Jetty:// 9.4.11.v20180605


After doing

Caused by:
java.lang.IllegalArgumentException: Failed to find the bundle manifest file 'frontend://vaadin-flow-bundle-manifest.json' in the servlet context for 'ES6' browsers. If you are running a dev-mode servlet container in maven e.g. `jetty:run` change it to `jetty:run-exploded`. If you are not compiling frontend resources, include the 'vaadin-maven-plugin' in your build script. Otherwise, you can skip this error either by disabling production mode, or by setting the servlet parameter 'original.frontend.resources=true'.

**The application runs on Chrome but the browser is still throwing an error in IE 11. This is a V13 project.
**

The customer has deleted 99% of the Java code from the trouble project and the only thing left is a logic page to replicate this issue. Attached is the zip file.

17656873.zip (321 KB)
17656876.png

Hi,

Since IE11 does not support ES6, transpilation is required so the project has to be built and run in production mode. I couldn’t find the production bundle in the shared screenshot (maybe it’s just not shown). Have you tried running mvn clean package jetty:run -Dvaadin.productionMode?

I don’t know if the run-exploded is strictly needed, but I run mvn jetty:run-exploded -Dvaadin.productionMode when I want to test against IE11 while developing. Deploying into production is then another thing.

jetty:run-exploded makes some progress!! It now works under jetty. But still not working for tomcat 8.5.
Is there a equivalent command to deploy the app into production for Tomcat?

For Tomcat the WAR has to be built for production and it should include flow-server-production-mode dependency or have the following context param specified in your web.xml

<context-param>
  <param-name>productionMode</param-name> 
  <param-value>true</param-value>
</context-param>

Hi Ankur! I downloaded dashboardiq-webapp.zip, unzipped in a directory, and then I ran mvn clean install -Pproduction-mode, and after it finished successfully I ran: mvn jetty:run-exploded and then I was able to access the application in Chrome, Firefox, Edge and IE11. The only difference is that if you ran the application using jetty, the url should be: http://localhost:8080/home and not http://localhost:8080/dashboardiq-webapp/home (jetty uses by default the empty context path).
The only thing I see is a login form (for what I was able to see in the code there is nothing else).
I attached some screenshots.

17657024.png
17657027.png

Hi Martin, I can now get it work for jetty but not Tomcat. I have followed the advice from Sayo ( include flow-server-production-mode, and set productionMode to be true in web.xml ). But it still doesn’t work for Tomcat at all (both IE and Chrome give the same error).

How do you deploy it into Tomcat? Are you building a .war and copying the .war under tomcat/webapps, or are you for example using the servers tab in Eclipse to autodeploy from IDE? Or something else? This info helps in giving instructions as each environment might differ in instructions a bit, and it would be easier to test and verify.

Hi Jens. For now I just do Mvn Clean package -Pproduction-mode and test it under Eclipse servers tab Tomcat.
Eventually we will build installers and put all the files and folders in a separated directory and reference it from /Tomcat/conf/catalina/localhost/myDashboard.xml.
The file structure looks almost identical in both case.
So the issue right now is the app under Eclipse Tomcat doesn’t work for chrome/IE. I haven’t test it with installer yet. Assuming they will have the same result.