Это не имеет большого смысла.
Если классы необходимы для компиляции проекта, то, вероятно, существуют статические зависимости от них в других классах. (В противном случае ... вы могли бы просто удалить его / их.)
Но если есть статические зависимости от этих классов, вы не сможете запускать приложения, если эти классы не присутствуют в файле JAR. Если вы оставите классы вне JAR, чтобы люди не использовали их (или что-то еще), ваше приложение умрет при запуске с исключениями «класс не найден».
Если вы хотите запретить людям использовать классы напрямую, попробуйте следующее:
Измените классы доступа на "пакет приватный". Это не делает невозможным их использование, но усложняет.
Измените свой проект так, чтобы зависимости от классов были полностью динамическими; например через Class.forName(...)
или внедрение зависимостей. Затем вы можете исключить классы из JAR по мере необходимости. Но еще раз: если вашему приложению нужно использовать классы, они должны быть доступны во время выполнения (каким-то образом), и поэтому другие люди смогут (каким-то образом) овладеть ими.
Измените свой проект, чтобы позволить вам полностью удалить классы. Это единственное надежное решение.
Наконец, прежде чем приступить ко всем этим неприятностям, вы должны спросить себя, почему вы вообще пытаетесь это делать. Почему бы вам просто не позволить людям использовать классы в любом случае? Что мешает им получать классы откуда-то еще ... или реализовывать свои собственные версии с нуля?