Running SpreadsheetDataReader from Java program

I’m trying to run a graph that starts with a SpreadsheetDataReader input from my Java program. When I run the graph from the CloverETL Designer in Eclipse everything works perfectly, but when I execute the graph from my program, I get:

java.lang.ClassNotFoundException: SPREADSHEET_READER

I saw an indication that the spreadsheet transformations in CloverETL Designer 4.0.4 is run by a CloverETL Runtime, and I’m assuming something related to that is the problem.

Am I supposed to execute my graph inside a separate CloverETL Runtime somehow? If so, how do I do that?

The full stack trace is here:

INFO  [main] - Checking graph configuration...
org.jetel.exception.XMLConfigurationException
	at org.jetel.graph.TransformationGraphXMLReaderWriter.throwXMLConfigurationException(TransformationGraphXMLReaderWriter.java:1241)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.instantiatePhases(TransformationGraphXMLReaderWriter.java:630)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.read(TransformationGraphXMLReaderWriter.java:493)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.read(TransformationGraphXMLReaderWriter.java:387)
	at org.chpl.etl.EtlGraph.setGraph(EtlGraph.java:51)
	at org.chpl.etl.App.main(App.java:13)
Caused by: org.jetel.exception.XMLConfigurationException
	at org.jetel.graph.TransformationGraphXMLReaderWriter.throwXMLConfigurationException(TransformationGraphXMLReaderWriter.java:1241)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.throwXMLConfigurationException(TransformationGraphXMLReaderWriter.java:1236)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.instantiateNodes(TransformationGraphXMLReaderWriter.java:683)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.instantiatePhases(TransformationGraphXMLReaderWriter.java:624)
	... 4 more
Caused by: java.lang.RuntimeException: Unknown component: SPREADSHEET_READER class: SPREADSHEET_READER
	at org.jetel.component.ComponentFactory.getComponentClass(ComponentFactory.java:116)
	at org.jetel.component.ComponentFactory.createComponent(ComponentFactory.java:150)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.instantiateNodes(TransformationGraphXMLReaderWriter.java:668)
	... 5 more
Caused by: java.lang.ClassNotFoundException: SPREADSHEET_READER
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at org.jetel.component.ComponentFactory.getComponentClass(ComponentFactory.java:106)
	... 7 more
INFO  [main] - Graph configuration is valid.

Hi alarned,

CloverETL Designer (both trial and commercial) contains 2 kinds of components. Part are open source components and part are commercial components. So you can design graphs containing both types.

But if you instantiate open source CloverETL Engine you have access only to open source components. That is why Engine complains - SpreadsheetReader is commercial component.

As workaround you can use XLSDataReader component which is available also in Engine. Unfortunately it is already deprecated component and will be for abandoned one day. If you want to see it in component palette of Designer, please enable it in Window->Preferences->CloverETL->Components in Palette->Deprecated.

If you want to use all components for transformation outside Designer you can purchase CloverETL Server.

I hope this helps.