I have a webapp that is packaged as a WAR but for which I have a main application class that creates an embedded Jetty instance to serve the WAR. All works well.
When the app starts Jetty extracts the WebApp content into the WebAppContext#tempDirectory and Jetty serves all resources.
But I am trying to package the WAR as an EXE using launch4J and am running into a problem. Launch4J creates the EXE, the EXE starts and my main class starts the Jetty server. But while the WebAppContext#tempDirectory is being correctly set, the contents of the WebApp are not being extracted into it.
Jetty does create the tempDirectory with a webapp child folder, but that child folder is empty. This means that Jetty returns 404 for everything.
NB the EXE that is generated by Launch4J is a valid archive and can be opened as such by WinZip etc.
So my question is, what is responsible within Jetty for extracting the webapp content?
What might be causing it to not extract from an application.exe archive vs an application.war archive?
What can be done to make it extract the content when repackaged as EXE?
This is on Jetty 9.1.1.v20140108