GraphPlan panner is a school assignment project for the lecture Planning and Scheduling. It is a working Java implementation of the GraphPlan planning algorithm. The planning problem is described using a Prolog-like language. The difference from the classical version of the algorithm, this implementations allows use of variables in the specification of actions.
Though this is not a production-level implementation (with respect to efficiency), it should be just fine for small to medium-sized planning problems.
Source code available on GitHub.