Я думаю, что то, что вы хотите сделать, невозможно в общем случае.Да, теоретически javac может найти (и найдет) все зависимости между классами.Но это правильно, только если эти зависимости жестко запрограммированы в вашем проекте, то есть вы не используете динамическую загрузку и отражение классов ни прямо, ни косвенно.
Реальные приложения обычно используют различные сторонние библиотеки, фреймворки и т. Д. Таким образом, иногда используется динамическая загрузка классов, даже если вы никогда не говорите в своем собственном коде Class.forName()
.Я думаю, что если вам нужна такая оптимизация, вы должны написать свой собственный скрипт, который создаст ваш собственный jar.Кстати, тот факт, что вам это нужно, вероятно, дает вам подсказку, что ваши проекты организованы неправильно.Возможно, вам следует разделить ваш проект на 2 или более.Каждый должен содержать только свои зависимости.В этом случае вы можете использовать встроенную возможность затмения для упаковки файлов JAR.