• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Spigot IndexOutOfBound***ception bei der Soket verbindung

D

deleted209242

Guest
Hi,

ich bekomme immer nach längerer Zeit einen Fehler in meinem Shop System.
[12:21:44] [Thread-6/WARN]: Exception in thread "Thread-6"
[12:21:44] [Thread-6/WARN]: java.lang.IndexOutOfBound***ception: Index 1 out of bounds for length 1
[12:21:44] [Thread-6/WARN]: at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
[12:21:44] [Thread-6/WARN]: at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
[12:21:44] [Thread-6/WARN]: at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
[12:21:44] [Thread-6/WARN]: at java.base/java.util.Objects.checkIndex(Objects.java:372)
[12:21:44] [Thread-6/WARN]: at java.base/java.util.ArrayList.get(ArrayList.java:458)

[12:21:44] [Thread-6/WARN]: at org.sullaysur.shops.SocketServer.run(SocketServer.java:49)

und hier ist der Code, es läuft immer einige Stunden und dann bricht er einfach ab und erstellt wenn man etwas auf der Webseite kauft einmalig diese Fehler meldung.

Javascript:
public class SocketServer extends Thread
{
    public static Plugin plugin;
    Printer p;
    ServerSocket socket;
    String socketpwd;
   
    public SocketServer(final int port, final String socketpw) throws IOException {
        this.p = new Printer();
        this.socket = new ServerSocket(port);
        this.socketpwd = socketpw;
    }
   
    @Override
    public void run() {
        this.p.info("Server is now online.");
        while (true) {
            final List<String> ips = (List<String>)SocketServer.plugin.getConfig().getStringList("banned-ips");
            final ArrayList<String> add_ip = new ArrayList<String>();
            try {
                final Socket sock = this.socket.accept();
                final BufferedReader br = new BufferedReader(new InputStreamReader(sock.getInputStream()));
                final String message = br.readLine();
                final String[] suffix = message.split(" ");
                String ClientIP = sock.getInetAddress().toString();
                ClientIP = ClientIP.replace("/", "");
                if (ips != null && !ips.isEmpty()) {
                    for (int lenb = ips.size(), i = 0; i <= lenb; ++i) {
                        if (ClientIP.equals(ips.get(i).toString())) {
                            this.p.warn("Falied authentication from blacklisted IP address: " + ips.get(i));
                            return;
                        }
                    }
                }
                if (this.socketpwd.equals(suffix[0])) {
                    String command = suffix[1];
                    for (int suffixL = suffix.length, j = 2; j < suffixL; ++j) {
                        command = String.valueOf(String.valueOf(command)) + " " + suffix[j];
                    }
                    this.p.info("Executing command: " + command);
                    RequestExecutor.executor(command);
                }
                else {
                    add_ip.add(ClientIP);
                    ips.addAll(add_ip);
                    SocketServer.plugin.getConfig().set("banned-ips", (Object)ips);
                    SocketServer.plugin.saveConfig();
                    this.p.warn("Failed authentication IP has been blacklisted: " + ClientIP);
                }
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
 

SirYwell

PlotSquared Entwickler
Registriert
30 Juni 2017
Beiträge
540
Diamanten
488
Minecraft
SirYwell
for (int lenb = ips.size(), i = 0; i <= lenb; ++i)
Stell dir vor, deine Liste enthält 10 Elemente. Da an der Stelle 0 das erste Element ist, ist an Stelle 9 das letzte. Mit dieser for-Schleife wird i aber 10 und du versuchst, auf das 11. Element zuzugreifen (welches aber natürlich nicht existiert, du bist außerhalb des gültigen Bereiches).
 
D

deleted209242

Guest
for (int lenb = ips.size(), i = 0; i <= lenb; ++i)
Stell dir vor, deine Liste enthält 10 Elemente. Da an der Stelle 0 das erste Element ist, ist an Stelle 9 das letzte. Mit dieser for-Schleife wird i aber 10 und du versuchst, auf das 11. Element zuzugreifen (welches aber natürlich nicht existiert, du bist außerhalb des gültigen Bereiches).
Danke, ich werde mal schauen ob dass der Fehler war der mir das System nicht ordentlich laufen lassen hat.
 
Registriert
10 Dezember 2017
Beiträge
161
Alter
26
Diamanten
322
Minecraft
DerFrZocker
Das ist doch absoluter Quatsch, warum sollte ich einen Falschen Code zu der Richtigen Fehlermeldung Posten? Wo liegt da der Sinn, wieder so ein Hohlkopf. Gibt es eigentlich nur noch idioten die einem Ohne jegliche Ahnung Antworten müssen. Echt traurig!

Er hat schon recht dein Code und die Fehler meldung stimmen nicht über ein. Und das liegt sehr wahrscheinlich daran da du die Import nicht mit kopiert hast.

Und warum ist das so wichtig?
Eine Fehlermeldung sagt dir immer in welcher Zeile eine Fehler auf tritt. In deinem Fall in Zeile 49 welche bei dir nur ein "}" ist. Und da kann keine Fehler auftreten. Spricht dein Code passt nicht zur Fehlermeldung.

Warum ist das so wichtig?
Es fehreinfacht die Fehler Suche enorm gerade bei fremdem Code. Bei dir geht es noch mit rund 60 Zeilen, wen aber eine classe mal mehere hundert Zeilen code hat und größere Methoden hat. Ist es nur noch eine Qual ein Fehler zu suchen, wenn Fehlermeldung und Code nicht über ein stimmen.

Also bitte nächste mal nachdenken / sich besser informieren befor man gleich so barsch wird.
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Das ist doch absoluter Quatsch, warum sollte ich einen Falschen Code zu der Richtigen Fehlermeldung Posten? Wo liegt da der Sinn, wieder so ein Hohlkopf. Gibt es eigentlich nur noch idioten die einem Ohne jegliche Ahnung Antworten müssen. Echt traurig!
Warum solltest du mit einer IndexOutOfBound***ception Probleme haben? Vielleicht weil du hier keine Ahnung hast? Achne, du bist der Experte. Warum brauchst du dann eigentlich noch Hilfe? Dass du einen Fehler machst scheinst du ja nicht mal einzusehen, wenn dich jemand darauf hinweist. Respekt an @DerFrZocker. Ich hätte dir nach dem Ausraster garantiert nicht weiter geholfen.
 

SirYwell

PlotSquared Entwickler
Registriert
30 Juni 2017
Beiträge
540
Diamanten
488
Minecraft
SirYwell
Danke, ich werde mal schauen ob dass der Fehler war der mir das System nicht ordentlich laufen lassen hat.
Warum "ob"? Das ist exakt der Fehler, der zu deiner Fehlermeldung passt. Zumindest, wenn man von dem absieht, was @Kroseida bereits geschrieben hat. Hättest du es auf die Reihe bekommen, den passenden Code zu schicken, hätte er dir vermutlich schon sagen können, wo das Problem ist. Du kannst ihm also ruhig auch ein "Gefällt mir" dalassen anstatt ihn zu beleidigen.
 
Oben