NullPointerException viene fuori quando cerchi di utilizzare un oggetto null nel caso in cui sia richiesto un oggetto valorizzato...
dalla documentazione di java:

Thrown when an application attempts to use null in a case where an object is required. These include:

Calling the instance method of a null object.
Accessing or modifying the field of a null object.
Taking the length of null as if it were an array.
Accessing or modifying the slots of null as if it were an array.
Throwing null as if it were a Throwable value.

controlla che tutti gli oggetti che hai nel main siano valorizzati prima di utilizzarli...