Personally, I'd put this dummy implementation inside the ReceivePackFactory as a static named inner class, like:
public class ReceivePackFactory {
  public static final Empty = new Empty();
  public static class Empty extends ReceivePackFactory {
    ... // methods throwing exception
  }
}

You can then use receivePackFactory = ReceivePackFactory.EMTPY (or substitute favourite name of choice). Possibly doesn't add much to reuse, but if you ever add a new method that you need to override in the ReceivePackFactory, you can add a dummy (exception-throwing) impl to the Empty class in the same file without having to change 2 source files (the client will still work in exactly the same way).

I appreciate this is a minor, almost stylistic comment, and I'd be OK with you ignoring it; but should we need to change the dummy methods in the future, it'd be my preference to only have to do that in one source file instead of two (as well as permitting other callers to re-use the Empty one should they have the same requirements).