Что нужно для запуска внешних файлов 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();
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());
Comments