Лоадер от ChatGPT
import java.io.IOException;
import java.io.File;
import java.util.Scanner;
import java.util.jar.JarFile;
public class JarLoaderWithLogin {
private static final String JAR_PATH = "path/to/your/jar";
private static final String ACCOUNTS_FILE = "path/to/your/accounts.txt";
private static boolean authenticate(String username, String password) {
try (Scanner scanner = new Scanner(new File(ACCOUNTS_FILE))) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] parts = line.split(":");
if (parts.length == 2 && parts[0].equals(username) && parts[1].equals(password)) {
return true;
}
}
} catch (IOException e) {
System.err.println("Ошибка чтения файла с аккаунтами");
}
return false;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите логин: ");
String username = scanner.nextLine();
System.out.print("Введите пароль: ");
String password = scanner.nextLine();
if (!authenticate(username, password)) {
System.err.println("Неверный логин или пароль.");
return;
}
try (JarFile jarFile = new JarFile(JAR_PATH)) {
// Загрузка всех классов из JAR-файла
// Также можно загрузить только определенные классы из JAR-файла
// и вызвать их методы
// Пример загрузки класса Main и вызова его статического метода main
Class<?> clazz = Class.forName("main.package.Main");
clazz.getDeclaredMethod("main", String[].class)
.invoke(null, new Object[] { null });
} catch (Exception e) {
System.err.println("Ошибка загрузки JAR-файла: " + e.getMessage());
}
}
}
Здесь используется файл accounts.txt, содержащий пары логин-пароль, разделенные символом :. Если логин и пароль, введенные пользователем, есть в файле, то загружается указанный JAR-файл и вызывается метод main указанного класса, например main.package.Main.main(). Обратите внимание, что при запуске приложения необходимо указать путь к JAR-файлу и файлу с аккаунтами JAR_PATH и ACCOUNTS_FILE соответственно.