Log in

View Full Version : Extremely Broken Code Please Help!


LFRobotics
22-01-2016, 17:13
I have no idea why the issue with this program escapes me. I have been looking at it for days with no headway. Maybe a new set of eyes can see the problem. The program is simple. It uses my XBox class to control a four motor arcade drive system using one of the joysticks on the controller. Some buttons then control a couple accessory motors.

Here is the code: https://github.com/FranklinMarquette/Robot2016

Here is what the driver station says when I try to enable the robot:

ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]ERROR Unhandled exception: java.lang.ExceptionInInitializerError at [org.usfirst.frc.team4623.robot.OI.<init>(OI.java:53), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]

The whole thing compiles and uploads just fine but fails at run-time.

Thanks so much,
Franklin

TimTheGreat
22-01-2016, 17:36
So I notice code breaks here (https://github.com/FranklinMarquette/Robot2016/blob/master/Robot2016/src/org/usfirst/frc/team4623/robot/OI.java#L53) and the motor1Stop class has
public static Motor1 motor = new Motor1();

while the motor1Move class does not. Try removing this?

kgross
23-01-2016, 13:34
Not sure what is causing your error yet, but it sounds like an undefined pointer.

But you should move a few lines around in your Motor1 and Motor2 classes. Right now you have the instantiation of the SpeedController above your constructor.


SpeedController motor = new Victor(4);

public Motor1() {


}

change it to.
Private SpeedController motor;
public Motor1(){
motor = new Victor(4);
}

LFRobotics
25-01-2016, 16:46
Okay so I applied those changes and have updated the code here:

https://github.com/FranklinMarquette/Robot2016

And it returns this error:

ERROR Unhandled exception: java.lang.IllegalArgumentException: Subsystem must not be null. at [edu.wpi.first.wpilibj.command.Command.requires(Com mand.java:194), org.usfirst.frc.team4623.robot.commands.Extend.<init>(Extend.java:16), org.usfirst.frc.team4623.robot.OI.<init>(OI.java:56), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:44), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]

Thanks for the help

TimTheGreat
25-01-2016, 19:23
Just a quick question. Are you reading the errors or just posting them here? It's ok if you are because they aren't the most lovely things to read (though you should try. It'll be much faster) What it's giving you is what's called a stack trace. It basically tells you the path the code took before it got an error. I've added a comment on what the error tells you.

ERROR Unhandled exception: java.lang.IllegalArgumentException: Subsystem must not be null. at [
edu.wpi.first.wpilibj.command.Command.requires(Com mand.java:194), #6
org.usfirst.frc.team4623.robot.commands.Extend.<in it>(Extend.java:16), #5
^------------This is the file-------------------------^---------------Line #- ^
org.usfirst.frc.team4623.robot.OI.<init>(OI.java:5 6), #4
org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:44), #3
du.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), #2
edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)] #1

So you start at the bottom and read up. Notice how it goes to robotInit at #3, then goes into OI at 4, then to the Extend class. At Line 16 (note my comment in the code) is where the error is. Looking at line 16 in the code shows

requires(Robot.pnue);
Looking in the Robot class I can see pneu, but the problem is it's initialized AFTER OI. So OI is looking for a null object, hence the error. Try putting OI after everything.

twiggzee
25-01-2016, 20:29
I'm having the same problem. Compiles just fine but red light on driver station robot code.

When I comment out everything in public OI{}, I get green light on driver station robot code. But why??

TimTheGreat: What do you mean by "Try putting OI after everything"?

Thanks for your reply!

TimTheGreat
25-01-2016, 20:39
I'm having the same problem. Compiles just fine but red light on driver station robot code.

When I comment out everything in public OI{}, I get green light on driver station robot code. But why??

TimTheGreat: What do you mean by "Try putting OI after everything"?

Thanks for your reply!

So in LFRobotics' code he has

oi = new OI();
pnue = new Pnuematics();


The problem is when you create a new OI object, it looks for robot.pneu. But as you can see pneu hasn't been created because it is after new OI(). So put new OI below the creation of everything else (in this case swap them).

LFRobotics
25-01-2016, 22:50
Okay that makes perfect sense. I did trace it back and could deduct that it had something to do with the extend class but never thought of movie the onus constructor

Thanks

twiggzee
26-01-2016, 17:43
Yes! That worked! Thanks so much, TimTheGreat!!!

TimTheGreat
26-01-2016, 22:39
Yes! That worked! Thanks so much, TimTheGreat!!!

Glad I could help :)

LFRobotics
27-01-2016, 17:08
Okay so moving that fixed it. Now the pnuematics are not working.

What does this error mean?

ERROR Unhandled exception: edu.wpi.first.wpilibj.util.AllocationException: Solenoid channel 1 on module 0 is already allocated at [edu.wpi.first.wpilibj.DoubleSolenoid.initSolenoid( DoubleSolenoid.java:54), edu.wpi.first.wpilibj.DoubleSolenoid.<init>(DoubleSolenoid.java:81), org.usfirst.frc.team4623.robot.commands.Retract.<init>(Retract.java:12), org.usfirst.frc.team4623.robot.OI.<init>(OI.java:57), org.usfirst.frc.team4623.robot.Robot.robotInit(Rob ot.java:42), edu.wpi.first.wpilibj.IterativeRobot.startCompetit ion(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.jav a:241)]

I have tried moving stuff around and changing simple things but it keeps throwing the same error.

Thanks again,
Franklin

TimTheGreat
27-01-2016, 17:21
Is your code up to date in the github repo?

PS: A good way of reaching me is on the Freenode IRC channel #robotpy. If you're on then you can have quick discussion which is a lot faster than CD

LFRobotics
27-01-2016, 21:45
That's not what I changed it to today but that code threw the same error - the ports for the double solenoid are 0 and 1

TimTheGreat
27-01-2016, 22:05
That's not what I changed it to today but that code threw the same error - the ports for the double solenoid are 0 and 1


Ok I think the problem is when you call the retract command you create a new solenoid on ports 0 and 1. Don't do this. If you call the retract command more than once (or call the extend command once) then you can't call it again because it tries to create a new solenoid. Create the solenoid somewhere and pass it to the command.