Using robotdrive in 2 commands

I am using one Subsystem that has methods for driving based on encoders and driving based on double input. I have been doing some scrounging and borrowed some code from various places.
the subsystem looks like this

DriveTrain

the commands used are DriveWithJoystick and DriveToDistance
DriveToDistance (this one doesnt do anything i commented out the autodrive part)

DriveWithJoysticks
Im stumped because when i deploy my code to the robot it gives a null pointer exception at the lines that reference the mechanum part

[cRIO] java.lang.NullPointerException
[cRIO]     at us.mn.k12.fairmont.robotics.subsystems.DriveTrain.driveMechanum_Cartesian(DriveTrain.java:37)
[cRIO]     at us.mn.k12.fairmont.robotics.commands.DriveWithJoysticks.execute(DriveWithJoysticks.java:25)

Anything else needed to solve the problem i can put into a pastebin but i dont know how to get around using the drive in 2 places.

Using one subsystem in multiple commands is the correct usage pattern - there’s no need to get around it.

The problem is that in your DriveTrain constructor, you declare and instantiate a local RobotDrive object instead of initializing the member variable. The quickest fix is just to remove the data type, i.e. change:

RobotDrive drive = new RobotDrive(RobotMap.frontLeftMotor, RobotMap.rearLeftMotor, RobotMap.frontRightMotor, RobotMap.rearRightMotor);

to

drive = new RobotDrive(RobotMap.frontLeftMotor, RobotMap.rearLeftMotor, RobotMap.frontRightMotor, RobotMap.rearRightMotor);

edit ]
And the same change should be applied to the enc variable.

Thank you very much! I will be testing it shortly.