Wątek przeniesiony 2015-10-24 16:18 z Java przez bogdans.

Błąd kompilacji programu.

0

Witam. Mam taki problem. Podczas kompilacji programu w eclipse mars wyrzuca taki komunikat:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
at client.Exploit.<clinit>(Exploit.java:10)
A oto kod źródłowy:

package client;
import java.io.*;
import java.net.*;
public class Exploit {
	public static Socket sock = null;
	public static String ip = new String("212.191.0.26");
	public static int port = 80;
	static String BUFFER;
	static OutputStream out = null;
	static byte BUFF[] = BUFFER.getBytes();
	public static void main(String[] args) throws IOException {
		sock = new Socket(ip, port);
		BUFFER = new String("A *1800");
		BUFFER += new String("xabzxc");
		out.write(BUFF);
		out.flush();
		out.close();
		sock.close();
		
	}
}

Z góry dzięki za pomoc :-).

1

w 10 linii BUFFER.getBytes() dostajesz NullPointerException, bo zmienna ref. BUFFER (static String BUFFER) nie wskazuje kompletnie na nic.

0

Nie rozumiem. Możesz trochę jaśniej?

0

W linii 10 zmienna BUFFER ma wartość null.

0

A co zrobić żeby funkcja BUFFER.getBytes() zamieniła string BUFFER na ciąg bajtów i wysłała je przez socket?

1

Przenieś tworzenie tablicy BUFF dalej - tam gdzie zmienna BUFFER ma już zawartość.

    public static void main(String[] args) throws IOException {
        sock = new Socket(ip, port);
        BUFFER = new String("A *1800");
        BUFFER += new String("xabzxc");
        byte BUFF[] = BUFFER.getBytes();

Skąd wytrzasnąłeś ten, pełen pól statycznych, kod?

0

Dziękuję za wszystkie odpowiedzi :-).

0

@bogdans Mój kod wygląda teraz tak:

package client;
import java.io.*;
import java.net.*;
public class Exploit {
	public static Socket sock = null;
	public static String ip = new String("212.191.0.26");
	public static int port = 80;
	static String BUFFER;
	static OutputStream out = null;
	public static void main(String[] args) throws IOException {
		sock = new Socket(ip, port);
		BUFFER = new String("A *1800");
		BUFFER += new String("xabzxc");
		byte BUFF[] = BUFFER.getBytes();
		out.write(BUFF);
		out.flush();
		out.close();
		sock.close();
		
	}
}

Wyrzuca taki błąd:
Exception in thread "main" java.lang.NullPointerException
at client.Exploit.main(Exploit.java:15)

0

o_O
static OutputStream out = null;
a niżej:
out.write(BUFF);
I wyjątek java.lang.NullPointerException, no któż by się tego spodziewał? ;] Zapewne chciałeś ten bufor wysłać przez socket, ale pewnie zakładasz że kompilator to jest jasnowidzem i domyśli się na jaki strumień wyjściowy chcesz pisać :D

0

Czyli wystarczy zamiast null'a wpisać to co ma wpisać w strumień i wysłać i po krzyku?

0

Nie, zacznij może programowanie od Hello World?
Wpierw musisz się połączyć z wybranym serwerem, potem pobrać OutputStream z tego połączenia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1