Custom Plugin does not load in run time of Embedded Hadoop - NullPointerException: Plugin 'my-plugin' not found

Problem

After developing a custom plugin, the first time that the plugin is used to execute a job on the Hadoop cluster, the following error is logged in the job log:

 WARN [2014-10-09 13:28:36.151] [Thread-58] (LocalJobRunner.java:298) - job_local_0002
java.lang.NullPointerException: Plugin 'my-plugin' not found.
	at datameer.com.google.common.base.Preconditions.checkNotNull(Preconditions.java:236)
	at datameer.dap.sdk.importjob.DasDelegateSplit.readFields(DasDelegateSplit.java:48)
	at org.apache.hadoop.io.serializer.WritableSerialization$WritableDeserializer.deserialize(WritableSerialization.java:67)
	at org.apache.hadoop.io.serializer.WritableSerialization$WritableDeserializer.deserialize(WritableSerialization.java:40)
	at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:396)
	at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:412)
	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
	at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:212)

Cause

The cause is a misconfiguration of the custom plugin. The ID of the plugin does not match the name of the plugin directory. Specifically, in the plugin.xml file the ID is set to "myplugin" which does not match "my-plugin".

Solution

To resolve this issue, update the plugin.xml file to ensure that the ID value in the XML file matches the name of the directory that the plugin is being developed in.