'NoClassDefFoundError' occurred on Custom Stage
I made very simple custom processor. It's maven dependency is below
<dependencies>
<dependency>
<groupId>com.streamsets</groupId>
<artifactId>streamsets-datacollector-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>1.12.0</version>
</dependency>
</dependencies>
And Processor code is below
import org.apache.xerces.util.DOMUtil;
public class SimpleDOMProcessor extends RecordProcessor {
public SimpleDOMProcessor(){
try{
DOMUtil domUtil = new DOMUtil();
} catch(Exception ignored){
}
}
}
Packaging is success. I put the library in the user-libs
and change sdc-security.policy
for "all permission" After restarting SDC, 'NoClassDefFoundError' occurred when validating(also starting).
ErorrLog is below
Caused by: java.lang.NoClassDefFoundError: org/apache/xerces/util/DOMUtil
at com.sample.bigdata.sdc.stage.processor.SimpleDOMProcessor.<init>(SimpleDOMProcessor.java:31)
at com.sample.bigdata.sdc.stage.processor.SimpleDOMDProcessor.createProcessor(SimpleDOMDProcessor.java:53)
at com.streamsets.pipeline.api.base.configurablestage.DProcessor.createStage(DProcessor.java:30)
at com.streamsets.pipeline.api.base.configurablestage.DStage.init(DStage.java:34)
at com.streamsets.datacollector.runner.StageRuntime.lambda$init$0(StageRuntime.java:211)
at com.streamsets.datacollector.util.LambdaUtil.withClassLoaderInternal(LambdaUtil.java:148)
at com.streamsets.datacollector.util.LambdaUtil.withClassLoader(LambdaUtil.java:44)
at com.streamsets.datacollector.runner.StageRuntime.init(StageRuntime.java:209)
at com.streamsets.datacollector.runner.StagePipe.init(StagePipe.java:123)
at com.streamsets.datacollector.runner.StagePipe.init(StagePipe.java:47)
at com.streamsets.datacollector.runner.Pipeline.initPipe(Pipeline.java:402)
at com.streamsets.datacollector.runner.Pipeline.lambda$init$0(Pipeline.java:392)
at com.streamsets.datacollector.runner.PipeRunner.forEach(PipeRunner.java:166)
at com.streamsets.datacollector.runner.Pipeline.init(Pipeline.java:390)
at com.streamsets.datacollector.runner.Pipeline.validateConfigs(Pipeline.java:218)
at com.streamsets.datacollector.runner.preview.PreviewPipeline.validateConfigs(PreviewPipeline.java:60)
at com.streamsets.datacollector.execution.preview.sync.SyncPreviewer.validateConfigs(SyncPreviewer.java:144)
It'is very weired. I have made and use some complicated cusmtom processor but I have never met this situation.
If I change xercesImpl
library to other simple library that's ok.(any problem is not occurred)
Is there any issue SDC with xercesImpl
library?