ComplexDataReader not working in server

Im trying to run in our clover server sandbox a project i made locally, this is the first time using complex data reader, if i run the process local it works perfect but when i try to move to sandbox it shows the following error:

Error: Loading of compiled Java class failed! [Used Java Platform doesn’t provide any java compiler! .]
2016-06-27 16:13:40,696 INFO 48504 [http-apr-8080-exec-10] Graph configuration is valid.
2016-06-27 16:13:40,696 INFO 48504 [http-apr-8080-exec-10] Executing job: Dev_rmartinez/graph/Example1.grf with permissions of user “clover”
2016-06-27 16:13:40,696 INFO 48504 [http-apr-8080-exec-10] Triggered via SOAP WS API
2016-06-27 16:13:46,759 INFO 48504 [http-apr-8080-exec-10] Initializing job id:1311074236158 hashCode:1754686741
2016-06-27 16:13:46,759 INFO 48504 [http-apr-8080-exec-10] Graph initialization (Blog)
2016-06-27 16:13:46,759 INFO 48504 [http-apr-8080-exec-10] Initializing phase 0
2016-06-27 16:13:46,759 ERROR 48504 [http-apr-8080-exec-10] Loading of compiled Java class failed
java.lang.IllegalStateException: Used Java Platform doesn’t provide any java compiler!
at org.jetel.util.compile.DynamicCompiler.compile(DynamicCompiler.java:117)
at com.opensys.cloveretl.ctl.BytecodeCompiler.a(Unknown Source)
at com.opensys.cloveretl.ctl.BytecodeCompiler.compile(Unknown Source)
at org.jetel.ctl.TLCompiler.compile(TLCompiler.java:300)
at org.jetel.component.TransformFactory.createTransformFromCode(TransformFactory.java:274)
at org.jetel.component.TransformFactory.createTransform(TransformFactory.java:204)
at org.jetel.component.TransformFactory.createTransform(TransformFactory.java:238)
at com.opensys.cloveretl.component.complexdatareader.ComplexDataReader.init(Unknown Source)
at org.jetel.graph.Phase.init(Phase.java:167)
at org.jetel.graph.TransformationGraph.init(TransformationGraph.java:622)
at org.jetel.graph.runtime.EngineInitializer.initGraph(EngineInitializer.java:271)
at com.cloveretl.server.job.b.b.execute(Unknown Source)
at com.cloveretl.server.job.k.executeJobAsync2ndPhase(Unknown Source)
at com.cloveretl.server.job.k.executeJobAsync(Unknown Source)
at com.cloveretl.server.facade.a.a.executeJobAsync(Unknown Source)
at com.cloveretl.server.facade.a.a.executeGraphAsync(Unknown Source)
at sun.reflect.GeneratedMethodAccessor3921.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at com.cloveretl.server.aop.UserAccessAdvice.invoke(Unknown Source)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at com.cloveretl.server.aop.AuditLogAdvice.invoke(Unknown Source)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy85.executeGraphAsync(Unknown Source)
at com.cloveretl.server.api.webservice.CloverServerWSImpl.executeGraph(Unknown Source)
at sun.reflect.GeneratedMethodAccessor3920.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.Trampoline.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor66.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor1637.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.xml.ws.api.server.MethodUtil.invoke(MethodUtil.java:83)
at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:250)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:149)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:88)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:419)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:868)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:422)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.invokeAsync(ServletAdapter.java:225)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:161)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:197)
at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.cloveretl.server.filter.GzipInputFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:81)
at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:132)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.cloveretl.server.a.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.cloveretl.server.filter.ClientTrackingFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.cloveretl.server.filter.InitCheckFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2522)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2511)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
2016-06-27 16:13:46,774 ERROR 48504 [FailureHandler_48504] Execution failed: Component [ComplexDataReader:COMPLEX_DATA_READER0] initialization failed.
Element [COMPLEX_DATA_READER0:ComplexDataReader]-Component [ComplexDataReader:COMPLEX_DATA_READER0] initialization failed.
at org.jetel.graph.Phase.init(Phase.java:172)
at org.jetel.graph.TransformationGraph.init(TransformationGraph.java:622)
at org.jetel.graph.runtime.EngineInitializer.initGraph(EngineInitializer.java:271)
at com.cloveretl.server.job.b.b.execute(Unknown Source)
at com.cloveretl.server.job.k.executeJobAsync2ndPhase(Unknown Source)
at com.cloveretl.server.job.k.executeJobAsync(Unknown Source)
at com.cloveretl.server.facade.a.a.executeJobAsync(Unknown Source)
at com.cloveretl.server.facade.a.a.executeGraphAsync(Unknown Source)
at sun.reflect.GeneratedMethodAccessor3921.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at com.cloveretl.server.aop.UserAccessAdvice.invoke(Unknown Source)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at com.cloveretl.server.aop.AuditLogAdvice.invoke(Unknown Source)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy85.executeGraphAsync(Unknown Source)
at com.cloveretl.server.api.webservice.CloverServerWSImpl.executeGraph(Unknown Source)
at sun.reflect.GeneratedMethodAccessor3920.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.Trampoline.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor66.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor1637.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.xml.ws.api.server.MethodUtil.invoke(MethodUtil.java:83)
at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:250)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:149)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:88)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:419)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:868)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:422)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.invokeAsync(ServletAdapter.java:225)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:161)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:197)
at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.cloveretl.server.filter.GzipInputFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:81)
at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:132)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.cloveretl.server.a.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.cloveretl.server.filter.ClientTrackingFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.cloveretl.server.filter.InitCheckFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2522)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2511)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: org.jetel.exception.LoadClassException: CTL code compilation finished with 1 errors.
Error: Loading of compiled Java class failed! [Used Java Platform doesn’t provide any java compiler! .]
at org.jetel.component.TransformFactory.createTransformFromCode(TransformFactory.java:284)
at org.jetel.component.TransformFactory.createTransform(TransformFactory.java:204)
at org.jetel.component.TransformFactory.createTransform(TransformFactory.java:238)
at com.opensys.cloveretl.component.complexdatareader.ComplexDataReader.init(Unknown Source)
at org.jetel.graph.Phase.init(Phase.java:167)
… 89 more
2016-06-27 16:13:46,774 INFO 48504 [JobFinalizer_48504] Finalization
2016-06-27 16:13:46,774 INFO 48504 [JobFinalizer_48504] RunTime: 7 secs
2016-06-27 16:13:46,774 ERROR 48504 [JobFinalizer_48504]
--------------------------------------------- Error details ----------------------------------------------
Component [ComplexDataReader:COMPLEX_DATA_READER0] initialization failed.
CTL code compilation finished with 1 errors.
Error: Loading of compiled Java class failed! [Used Java Platform doesn’t provide any java compiler! .]
----------------------------------------------------------------------------------------------------------
2016-06-27 16:13:46,774 INFO 48504 [JobFinalizer_48504] Finished Status: ERROR

See details of execution #48504

Could it be that something is missing in the server or the server has an older version of clover?

Versions of CloverETL Designer and CloverETL Server have to match perfectly. If they don’t, unexpected issues may appear.

I assume you use JRE with your CloverETL Server and JDK with Designer. ComplexDataReader requires JDK by default so this might be the cause of your troubles.

If you use JDK with the Server, could you please post your project here? Also, what versions of Java exactly (JDK or JRE, vendor, version number) do you use with your Designer and your CloverETL Server?

The version in the server is the same as mine,
I’ve confirmed with administrator that the server has JRE, what could be the implications of installing JDK to the server to make ComplexDataReader work? There are a lot of other workflows running in the production server right now.

Thanks,

Ricardo Martinez

There are no implications. You can install the JDK separately and use it just for the application server, you do not have to replace your original JRE installation. JDK is the recommended option for CloverETL so you do not have to worry about any incompatibility or anything else.