1

I'm deploying a JavaEE application on Payara Micro Programmatically. It works fine in Netbeans IDE, but I get the error below when using java -jar myapp.jar from cmd.

It looks like Payara Micro can't find javac. Suggestions on how to go about solving this would be much appreciated.

  • I have my JAVA_HOME set to C:\Program Files\Java\jdk1.8.0_111
  • I use Payara-micro 4.1.1.164 on Windows 7.
StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: PWC6345: There is an error in invoking javac.
  A full JDK (not just JRE) is required
        at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorH
andler.java:92)
        at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.j
ava:378)
        at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.j
ava:119)
        at org.apache.jasper.compiler.Jsr199JavaCompiler.compile(Jsr199JavaCompi
ler.java:208)
        at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:384)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:453)
        at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext
.java:625)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
.java:375)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:4
73)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java
:1693)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:344)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:214)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:316)
        at org.springframework.security.web.access.intercept.FilterSecurityInter
ceptor.invoke(FilterSecurityInterceptor.java:126)
        at org.springframework.security.web.access.intercept.FilterSecurityInter
ceptor.doFilter(FilterSecurityInterceptor.java:90)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.access.ExceptionTranslationFilter.do
Filter(ExceptionTranslationFilter.java:114)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.session.SessionManagementFilter.doFi
lter(SessionManagementFilter.java:122)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.authentication.AnonymousAuthenticati
onFilter.doFilter(AnonymousAuthenticationFilter.java:111)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.servletapi.SecurityContextHolderAwar
eRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter
.doFilter(RequestCacheAwareFilter.java:48)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.authentication.AbstractAuthenticatio
nProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.authentication.logout.LogoutFilter.d
oFilter(LogoutFilter.java:120)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.header.HeaderWriterFilter.doFilterIn
ternal(HeaderWriterFilter.java:64)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:107)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.context.request.async.WebAsyncManage
rIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:107)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.session.ConcurrentSessionFilter.doFi
lter(ConcurrentSessionFilter.java:133)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.context.SecurityContextPersistenceFi
lter.doFilter(SecurityContextPersistenceFilter.java:91)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(Fi
lterChainProxy.java:213)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChai
nProxy.java:176)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(D
elegatingFilterProxy.java:344)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(Delegat
ingFilterProxy.java:261)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:256)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:214)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:316)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:161)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.j
ava:734)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:673)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:174)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.j
ava:416)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:283)
        at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallab
le.call(ContainerMapper.java:466)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(Container
Mapper.java:169)
        at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.
java:206)
        at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.ja
va:180)
        at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpSer
verFilter.java:235)
        at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(Executor
Resolver.java:119)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(De
faultFilterChain.java:284)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart
(DefaultFilterChain.java:201)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultF
ilterChain.java:133)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultF
ilterChain.java:112)
        at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.jav
a:77)
        at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNI
OTransport.java:526)
        at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(Abstr
actIOStrategy.java:112)
        at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerTh
readIOStrategy.java:117)
        at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(Wo
rkerThreadIOStrategy.java:56)
        at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadR
unnable.run(WorkerThreadIOStrategy.java:137)
        at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(Abs
tractThreadPool.java:593)
        at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(Abstra
ctThreadPool.java:573)
        at java.lang.Thread.run(Unknown Source)
]]
SiHa
  • 7,830
  • 13
  • 34
  • 43
rey_coder
  • 422
  • 8
  • 12
  • This isn't the answer to OP's question - but I came here with same problem on Linux - [this](https://stackoverflow.com/a/44847750/1265200) provided the answer - yum install of openjdk on linux only installs jre. – Dazed Feb 01 '19 at 17:01

1 Answers1

2

Check that java command refers to JDK and not JRE. If it does not, either use java command from C:\Program Files\Java\jdk1.8.0_111, or set C:\Program Files\Java\jdk1.8.0_111 as java.home system property like this:

java -Djava.home="C:\Program Files\Java\jdk1.8.0_111" -jar myapp.jar

Payara Micro tries to find the java compiler to compile JSPs on the classpath or in the folder defined by java.home system property, but cannot find it.

For details, see the source code of ToolPovider.getSystemJavaCompiler(), which is used by Payara Micro to find the Java compiler.

Youcef LAIDANI
  • 55,661
  • 15
  • 90
  • 140
OndroMih
  • 7,280
  • 1
  • 26
  • 44
  • additionally, make sure that you really have installed the JDK if you think you have...I've found the installer on Windows to be a bit confusing and, despite downloading the JDK installer, I accidentally installed only the JRE. It's a very easy mistake to make. – Mike Dec 23 '16 at 21:57
  • Thanks for the response, was caught up in some other projects.... anyway, my java command refers to jdk and not jre which is the same path used in netbeans jdk path. Still don't get why "myapp" works fine in the ide and myapp.jar from cmd doesn't yet they use the same jdk. – rey_coder Jan 03 '17 at 13:54
  • How do you run the app from Netbeans? Are you deploying to Payara Server or running embedded Payara Micro from your app? Have you tried specifying `-Djava.home` on command line as I suggested in the answer? – OndroMih Jan 03 '17 at 17:58
  • In the Netbeans I deploy the WAR file programmatically in the main function of my java application. i tried specifying -Djava.home and am getting Exception in thread "main" Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: Could not initialize class sun.font.SunFontManager – rey_coder Jan 04 '17 at 05:39
  • I finally found a way out... after downloading and copying jdk folder to myapp.jar location, this executed as I required then since I need it portable, it means it will use the jdk ported irrespective of either one exists or not in the target machine. `set path=%path%jdk1.8.0_77\bin & jdk1.8.0_77\jre\bin\java.exe -jar app.jar` Thanks for the responses, did shade some light. – rey_coder Jan 05 '17 at 21:03