Я пишу программу, которая подключается к веб-хосту, у которого есть каталог, содержащий пару файлов JAR. Затем в графическом интерфейсе отображается имя JAR, и при двойном щелчке по имени открывается файл JAR.
Проблема, с которой я столкнулся, заключается в том, что не все файлы JAR содержат метод main в одном и том же месте, поэтому мне нужен какой-то способ найти основной класс.
Я попытался сделать такой подход:
File file = new File("website/test.jar");
JarFile jar = new JarFile(file);
String mainClass = jar.getManifest().getMainAttributes().get("Main-Class").toString();
Однако я получаю:
Exception in thread "main" java.util.zip.ZipException: error in opening zip file
В строке, где создается объект JarFile. Я подумал о двух решениях: пройти через все файлы классов в JAR и найти тот, который содержит метод main, или создать текстовый файл в каталоге, который сообщает основной файл каждого JAR.
Я бы предпочел использовать первое решение, потому что на самом деле оно не требует от меня делать дополнительные шаги каждый раз, когда я загружаю другой JAR. Однако я обеспокоен тем, что это своего рода альтернатива "грубой силы", и она кажется неэффективной.
Кто-нибудь из вас испытывал подобные проблемы?
Большое спасибо!