custom libraries

I’m the lead programmer for my team and I found myself copying a lot of last year’s code and having to copy code for multiple projects, and I thought, why not make a library? But in trying to make one I ran into several problems:

  1. Why the heck does a java FRC project only download WPILibJ to the robot and not any standard Java packages?
  2. Why does FRC code have to be in JDK 1.4, which doesn’t have a lot of nice features?
  3. Even if I dealt with these other downsides, how to I create a separate library in NetBeans that I can include in an FRC project and build and download to the cRIO?

We can live without creating a library, but it would make future coding and updating a heck of a lot easier, and copying code for each project is just bad programming practice. Even if there isn’t a way that FRC intended for people to make libraries, is there a way to “hack” the cRIO and download compiled code via FTP, which would have all the libraries and everything.
Any help is appreciated.

  1. I assume the standard Java libraries are already on the cRio with the Squawk VM.

  2. Because Squawk VM is based on Java ME; Java ME is a restricted version of Java 1.3

  3. Just like how you would do for any project. Just create a new package and write all your library code in there and import that package in a future project. The WPILibJ is essentially one of these.

How do you import a package from another project and add it to an FRC project’s build path? I tried the project settings but I didn’t see anything.

Just right click it and copy paste it. That’s what I do anyway. Probably it is proper to compile it as a jar and put in the necessary paths in the project settings, but that is too much hassle.

That was the whole point of this though: to eliminate the need to copy and paste. While it might be a hassle now, it would save a lot of time and effort down the road.

You are going to have to copy and paste the libraries to individual computers anyway. What I meant by copy and paste is not the individual snippets of code, but the whole folder.