Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите java.lang.ArrayIndexOutOfBoundsException: 3

Тема в разделе "[Архив] Помощь", создана пользователем MrGoose, 5 апр 2013.

  1. Автор темы
    MrGoose

    MrGoose Активный участник

    Баллы:
    78
    Сделал систему авторизации, прописал всё в лаунчере, вылетает "java.lang.ArrayIndexOutOfBoundsException: 3", что это и как с этим справиться?
    Всё делал по этому гайду тык, сайт на дле 9.7
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    MrGoose

    MrGoose Активный участник

    Баллы:
    78
    Не кто не знает прям ответа? использую dle 9.6 всё нормально
     
  4. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    В ошибке должен еще указываться источник. В данном случае у тебя происходит выход за пределы массива. Чтобы понять, что не так - нужен исходный код места, где эта ошибка возникает.
     
  5. Автор темы
    MrGoose

    MrGoose Активный участник

    Баллы:
    78
    Код:
    launcher = new Launcher();
          launcher.customParameters.putAll(customParameters);
          launcher.customParameters.put("userName", values[2].trim());
          launcher.customParameters.put("latestVersion", values[0].trim());
          launcher.customParameters.put("downloadTicket", values[1].trim());
          launcher.customParameters.put("sessionId", values[3].trim());
          launcher.init();
         
          if (LoginForm.server == "1") {
              launcher.customParameters.put("server", Config.serverip1);
              launcher.customParameters.put("port", Config.serverport1);}
              launcher.init();
             
          if (LoginForm.server == "2") {
              launcher.customParameters.put("server", Config.serverip1);
              launcher.customParameters.put("port", Config.serverport2);}
              launcher.init();
             
          if (LoginForm.server == "3") {
              launcher.customParameters.put("server", Config.serverip1);
              launcher.customParameters.put("port", Config.serverport3);}
              launcher.init();
          if (LoginForm.server == "4") {
              launcher.customParameters.put("server", Config.serverip1);
              launcher.customParameters.put("port", Config.serverport4);}
              launcher.init();
          if (LoginForm.server == "5") {
              launcher.customParameters.put("server", Config.serverip1);
              launcher.customParameters.put("port", Config.serverport5);}
              launcher.init();
          if (LoginForm.server == "6") {
              launcher.customParameters.put("server", Config.serverip1);
              launcher.customParameters.put("port", Config.serverport6);}
              launcher.init();
    Ругался он на " launcher.customParameters.put("sessionId", values[3].trim());", при попытке войди. После отката назад на 9.6 он не ругается

    И в окне со новостями он почему то просил обновить какой-то fly player, для телефона.
     
    slavik123123123 нравится это.
  6. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    У тебя в этом месте выход за пределы массива, где у тебя инициализируется values изначально, покажи код. Что-то мне кажется, что там нет значения.
     
  7. Автор темы
    MrGoose

    MrGoose Активный участник

    Баллы:
    78
    Код:
    package net.minecraft;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Frame;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.security.DigestInputStream;
    import java.security.MessageDigest;
    import java.util.Formatter;
    import java.util.HashMap;
    import java.util.Map;
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
    import javax.swing.UIManager;
     
    public class LauncherFrame extends Frame
    {
        public static String calculateHash(MessageDigest algorithm,
                String fileName) throws Exception{
            FileInputStream    fis = new FileInputStream(fileName);
            BufferedInputStream bis = new BufferedInputStream(fis);
            @SuppressWarnings("resource")
            DigestInputStream  dis = new DigestInputStream(bis, algorithm);
     
            while (dis.read() != -1);
                  byte[] hash = algorithm.digest();
     
            return byteArray2Hex(hash);
        }
    private static String byteArray2Hex(byte[] hash) {
            @SuppressWarnings("resource")
            Formatter formatter = new Formatter();
            for (byte b : hash) {
                formatter.format("%02x", b);
            }
            return formatter.toString();
        }
     
     
      //public static final int VERSION = 13;
      private static final long serialVersionUID = 1L;
      public Map<String, String> customParameters = new HashMap<String, String>();
      public Launcher launcher;
      public LoginForm loginForm;
     
      public LauncherFrame()
      {
     
     
        super(Config.title);
     
        setBackground(Color.BLACK);
        loginForm = new LoginForm(this);
        JPanel p = new JPanel();
        p.setLayout(new BorderLayout());
        p.add(loginForm, "Center");
     
        p.setPreferredSize(new Dimension(854, 480));
     
        setLayout(new BorderLayout());
        add(p, "Center");
     
        pack();
        setLocationRelativeTo(null);
        try
        {
          setIconImage(ImageIO.read(LauncherFrame.class.getResource("favicon.png")));
        } catch (IOException e1) {
          e1.printStackTrace();
        }
     
        addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent arg0) {
            new Thread() {
              public void run() {
                try {
                  Thread.sleep(30000L);
                } catch (InterruptedException e) {
                  e.printStackTrace();
                }
                System.out.println("FORCING EXIT!");
                System.exit(0);
              }
            }
            .start();
            if (launcher != null) {
              launcher.stop();
              launcher.destroy();
            }
            System.exit(0);
          } } );
      }
     
      public void playCached(String userName) {
        try {
          if ((userName == null) || (userName.length() <= 0)) {
            userName = "Player";
          }
          launcher = new Launcher();
          launcher.customParameters.putAll(customParameters);
          launcher.customParameters.put("userName", userName);
          launcher.init();
          removeAll();
          add(launcher, "Center");
          validate();
          launcher.start();
          loginForm = null;
          setTitle("Minecraft");
        } catch (Exception e) {
          e.printStackTrace();
          showError(e.toString());
        }
      }
     
    //--------------------------------
    //  public String getFakeResult(String userName) {
    //        return Util.getFakeLatestVersion() + ":35b9fd01865fda9d70b157e244cf801c:" + userName + ":12345:";
    //      }
    //---------------------------------
     
      public void login(String userName, String password) {
        try {
          String parameters = "user=" + URLEncoder.encode(userName, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8") + "&version=" + (Config.version);
          String result = Util.excutePost(Config.auth, parameters);
    //      String result = getFakeResult(userName);
          if (result == null) {
            showError("Невозможно подключится к серверу!");
            loginForm.setNoNetwork();
            return;
          }
          String applicationData = System.getenv("APPDATA");
          String  f = applicationData + "/."+Config.workdir+"/bin/minecraft.jar";
     
          try
    {
     
      MessageDigest md5  = MessageDigest.getInstance("MD5");
    String p = calculateHash(md5, f);
     
     
                    URL localURL = new URL(Config.hash + p);
            BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream()));
            String str2 = localBufferedReader.readLine();
            if (str2.equalsIgnoreCase("NO")){
                {
                    GameUpdater.forceUpdate = true;
                }
     
          }
            else if (str2.equalsIgnoreCase("YES"))
            {
            }
     
      }
     
          catch(FileNotFoundException fnfn)
          {
          GameUpdater.forceUpdate = true;
          }
     
     
     
     
          if (!result.contains(":")) {
            if (result.trim().equals(Config.Bad)) {
              showError("Неправильный логин или пароль!");
            } else if (result.trim().equals(Config.Badv)) {
              loginForm.setOutdated();
              showError("Нужно обновить лаунчер!");
            } else {
              showError(result);
            }
            loginForm.setNoNetwork();
            return;
          }
          String[] values = result.split(":");
     
          launcher = new Launcher();
          launcher.customParameters.putAll(customParameters);
          launcher.customParameters.put("userName", values[2].trim());
          launcher.customParameters.put("latestVersion", values[0].trim());
          launcher.customParameters.put("downloadTicket", values[1].trim());
          launcher.customParameters.put("sessionId", values[3].trim());
          launcher.init();
     
          if (LoginForm.server == "1") {
              launcher.customParameters.put("server", Config.serverip1);
              launcher.customParameters.put("port", Config.serverport1);}
              launcher.init();
         
          if (LoginForm.server == "2") {
              launcher.customParameters.put("server", Config.serverip1);
              launcher.customParameters.put("port", Config.serverport2);}
              launcher.init();
         
          if (LoginForm.server == "3") {
              launcher.customParameters.put("server", Config.serverip1);
              launcher.customParameters.put("port", Config.serverport3);}
              launcher.init();
          if (LoginForm.server == "4") {
              launcher.customParameters.put("server", Config.serverip1);
              launcher.customParameters.put("port", Config.serverport4);}
              launcher.init();
          if (LoginForm.server == "5") {
              launcher.customParameters.put("server", Config.serverip1);
              launcher.customParameters.put("port", Config.serverport5);}
              launcher.init();
          if (LoginForm.server == "6") {
              launcher.customParameters.put("server", Config.serverip1);
              launcher.customParameters.put("port", Config.serverport6);}
              launcher.init();
             
     
     
          removeAll();
          add(launcher, "Center");
          validate();
          launcher.start();
          loginForm.loginOk();
          loginForm = null;
          setTitle("Minecraft");
        } catch (Exception e) {
          e.printStackTrace();
          showError(e.toString());
          loginForm.setNoNetwork();
        }
      }
     
      private void showError(String error) {
        removeAll();
        add(loginForm);
        loginForm.setError(error);
        validate();
      }
     
      public boolean canPlayOffline(String userName) {
        Launcher launcher = new Launcher();
        launcher.customParameters.putAll(customParameters);
        launcher.init(userName, null, null, null);
        return launcher.canPlayOffline();
      }
     
      public static void main(String[] args) {
        try {
          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch (Exception localException) {
        }
        LauncherFrame launcherFrame = new LauncherFrame();
        launcherFrame.setVisible(true);
        launcherFrame.customParameters.put("stand-alone", "true");
     
        if (args.length >= 3) {
          String ip = args[2];
          String port = "25565";
          if (ip.contains(":")) {
            String[] parts = ip.split(":");
            ip = parts[0];
            port = parts[1];
          }
     
          launcherFrame.customParameters.put("server", ip);
          launcherFrame.customParameters.put("port", port);
        }
     
        if (args.length >= 1) {
          launcherFrame.loginForm.userName.setText(args[0]);
          if (args.length >= 2) {
            launcherFrame.loginForm.password.setText(args[1]);
            launcherFrame.loginForm.doLogin();
          }
        }
      }
    }
    Исходники
     
    ВремяПриключений нравится это.
  8. Автор темы
    MrGoose

    MrGoose Активный участник

    Баллы:
    78
  9. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Запусти лаунчер в режиме "Debug" и поставь точку останова на auncher =new Launcher();
    И погляди на содержимое values.
     
  10. Автор темы
    MrGoose

    MrGoose Активный участник

    Баллы:
    78
    Не совсем понял как поставить точку?
     
  11. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Щелкнуть правой кнопкой по нужной строке, запустить в debug и на этой строке остановится.
     

    Вложения:

  12. Автор темы
    MrGoose

    MrGoose Активный участник

    Баллы:
    78
    Не нашёл строки "auncher =new Launcher(); "
     
  13. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Код:
    launcher = new Launcher();
          launcher.customParameters.putAll(customParameters);
          launcher.customParameters.put("userName", values[2].trim());
          launcher.customParameters.put("latestVersion", values[0].trim());
          launcher.customParameters.put("downloadTicket", values[1].trim());
          launcher.customParameters.put("sessionId", values[3].trim());
    Вот это ты вставлял. Вот здесь и поставь.
     
    Сникерсни нравится это.
  14. Автор темы
    MrGoose

    MrGoose Активный участник

    Баллы:
    78
    LineBreakpoint LauncherFrame.java : 188 успешно установлена.
    Но у меня стоит сейчас Dle 9.6
     
    ВремяПриключений нравится это.
  15. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Просто поставь точку останова на любой из данных строчек и наведи курсор на values[3].trim()
     
  16. Автор темы
    MrGoose

    MrGoose Активный участник

    Баллы:
    78
    Нету values, все вкладки пересмотрел.
     
  17. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    String[] values = result.split(":");
     
  18. Автор темы
    MrGoose

    MrGoose Активный участник

    Баллы:
    78
    values = (java.lang.String[]) #2601(length=5)
     
  19. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    Лучше перед этими строками напиши:
    launcher = new Launcher();
    launcher.customParameters.putAll(customParameters);
    launcher.customParameters.put("userName", values[2].trim());
    launcher.customParameters.put("latestVersion", values[0].trim());
    launcher.customParameters.put("downloadTicket", values[1].trim());
    launcher.customParameters.put("sessionId", values[3].trim());

    Вот это:
    JOptionPane.showMessageDialog(this, result);
    И смотри что приходит тебе, при авторизации
     

Поделиться этой страницей