Что нужно для запуска внешних файлов JAR, таких как Minecraft launcher?



Если вы никогда не играли в Minecraft, то именно так работает механика запуска.



Пользователь может скачать JAR (или JAR, упакованный в EXE), который не имеет абсолютно никакого кода для клиента Minecraft вообще. Это считается пусковой установкой. Когда пусковая установка запускается, она отображает экран входа в систему с новостями и т. д. Затем, после входа в систему, пусковая установка запускает основное ядро Minecraft, minecraft.кувшин. Если он отсутствует в системе, он загружает его.
Майнкрафт лаунчер для запуска не требуется никаких внешних библиотек Java.

Как он это делает?



В настоящее время я пытаюсь воспроизвести функциональность, однако, когда я экспортирую как запускаемый JAR в Eclipse, когда я пытаюсь запустить его, он печатает "не удалось найти основной класс запуска.кувшин. Программа выйдет " (это на консоли, я хочу иметь возможность дважды щелкнуть банку и запустить ее)



File file = new File(System.getProperty("user.dir") + "/lessur.jar"); 
System.setProperty("org.lwjgl.librarypath", System.getProperty("user.dir") + "natives");
URLClassLoader classLoader;
classLoader = URLClassLoader.newInstance(new URL[]{file.toURI().toURL()});
classLoader.loadClass("zombie.engine.Lighting2").newInstance();
662   3  

3 ответов:

Для запуска Jar требуется Манифест, указывающий основной класс для использования. При экспорте из eclipse можно выбрать конфигурацию запуска (например, из предыдущего тестового запуска), и eclipse использует эту информацию для заполнения манифеста.

Update: подумав об этом немного больше, основываясь на выводе выше и комментариях ниже, я предполагаю, что вы пытаетесь запустить jar, используя команду "java" из командной строки. Если это так, то вам нужно использование:
java -jar launcher.jar
нет:
java launcher.jar

Вот воспроизведение того, что, как мне кажется, вы видите:

C:\Users\Tim\Desktop > Java launcher.jar
Исключение в потоке" main " java.яз..NoClassDefFoundError: пусковая установка / jar вызвано:
Ява.яз..ClassNotFoundException: пусковая установка.jar
в java. net. URLClassLoader$1. run (неизвестный источник)
на Яве.безопасность.AccessController.doPrivileged (Native Method)
в Java.чистая.Urlclassloader, на.findClass(неизвестный Источник)
на Яве.яз..загрузчик классов.loadClass (неизвестный источник)
в Sun.разное.Launcher$AppClassLoader.loadClass (неизвестный источник)
на Яве.яз..загрузчик классов.loadClass (неизвестный источник)
не удалось найти основной класс: пусковая установка.кувшин. Программа выйдет.

C:\Users\Tim\Desktop > java-jar launcher.jar
Ран

// Use the File constructor that will insert the correct separator for the OS
File file = new File(System.getProperty("user.dir"), "lessur.jar"); 
System.out.println( "File exists: " + file.exists() );
File libs = new File(System.getProperty("user.dir"), "natives");
System.out.println( "Libs exists: " + libs.exists() );
System.setProperty("org.lwjgl.librarypath", libs.toString());

Вы должны попробовать декомпилятор Java

Comments

    Ничего не найдено.