problem z getResourceAsStream w j2me

0

mam w kodzie:

       try {
       DataInputStream is = new DataInputStream(getClass().getResourceAsStream(nazwa));
       Poziomo = is.readShort();
        } catch (IOException e) {
            e.printStackTrace();
        }

gdzie nazwa to "/dane.dat" a plik znajduje sie w katalogu res mojego projektu. Otoz problem polega na tym, ze po dodaniu tego aplikacja nawet sie nie wlacza.
Jak to rozwiazac?

0

a co Ci pisze printStackTrace?

0

a katalog res jest w buildpath w ogóle?

0

Jad URL for OTA execution: http://localhost:8082/servlet/org.netbeans.modules.mobility.project.jam.JAMServlet/C%3A/Documents+and+Settings/TheMarcQ/Moje+dokumenty/JavaMESDKProjects/cosmoBATTLE/dist//cosmoBATTLE.jad
Starting emulator in execution mode

a co Ci pisze printStackTrace?

Installing suite from: http://127.0.0.1:1167/cosmoBATTLE.jad
TRACE: <at java.lang.NullPointerException:   0>, Exception caught in Display class
java.lang.NullPointerException:   0
 - java.io.DataInputStream.read(), bci=4
 - java.io.DataInputStream.readUnsignedShort(), bci=1
 - java.io.DataInputStream.readShort(), bci=1
 - game.Plotno_game.<init>(), bci=68
 - game.game.wybierz(), bci=17
 - game.game.commandAction(), bci=17
 - javax.microedition.lcdui.Display$ChameleonTunnel.callScreenListener(), bci=46
 - com.sun.midp.chameleon.layers.SoftButtonLayer.processCommand(), bci=74
 - com.sun.midp.chameleon.layers.SoftButtonLayer.soft1(), bci=37
 - com.sun.midp.chameleon.layers.SoftButtonLayer.keyInput(), bci=36
 - com.sun.midp.chameleon.CWindow.keyInput(), bci=38
 - javax.microedition.lcdui.Display$DisplayEventConsumerImpl.handleKeyEvent(), bci=17
 - com.sun.midp.lcdui.DisplayEventListener.process(), bci=277
 - com.sun.midp.events.EventQueue.run(), bci=179
 - java.lang.Thread.run(), bci=11

a katalog res jest w buildpath w ogóle?

znaczy properties>build>libraries and resources ?? Jesli tak, to tak.

0

Udalo mi sie to naprawic, lecz wyskoczyl problem kolejny, mam teraz:

       try {
       DataInputStream is = new DataInputStream(getClass().getResourceAsStream(nazwa));
       Poziomo = is.readShort();
       Pionowo=is.readShort();
       plansza = new short[Pionowo][Poziomo];
   for(int j=1;j<Pionowo;j++){
            for(int i=1;i<Poziomo;i++){
                plansza[j][i]=is.readShort();
            }
        }
       is.close();
              } catch (IOException e) {
            e.printStackTrace();
        }

i znowu sie nie wlacza lecz w oknie output wyskakuje

TRACE: <at java.lang.OutOfMemoryError>, Exception caught in Display class
java.lang.OutOfMemoryError
   (stack trace incomplete)
0

Problemy z czytaniem czy nie znajomość języka angielskiego? Masz przecież napisane: java.lang.OutOfMemoryError

0

Wiem co to oznacza. Prawdopodobnie chodzi o nie wystarczajaca ilosc pamieci RAM wykorzystywanej przez emulator. Tylko jak to naprawic?

0

Komórka nie ma tyle pamięci co najnowszy komputer. Powiedz jakiej wielkości wczytujesz plik.

0

375 bajtow

0

Jaką liczbę wpisujesz do zmiennych: Poziomo i Pionowo ?

0

tresc pliku plansza.dat to:
55616532505605660160442236
/\ te 2 pierwsze wartosci to Pionowo i Poziomo, reszta to wartosci do petli

0

Hmm ty sam tworzyłeś ten plik?

0

tak w c++, o tak

#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;

int main()
{
    cout << "Hello! tworzeni mapy..." << endl;
    short szerokosc =  5;
    short wysokosc = 5;
    ofstream plik("plansza.dat");
    plik<<szerokosc;
    plik<<wysokosc;
    for(int i=1; i<szerokosc*wysokosc;i++){
    short los=rand()%7;
    plik << los;
    cout << los << endl;
    }
    plik.close();
    cout << "zakonczono" << endl;
    return 0;
}
0

No to źle. Jeśli chcesz korzystać z DataInputStream to plik musisz stworzyć za pomocą DataOutputStream.

0

Czyli java w jakis inny sposob zapisuje dane do pliku niz cpp?

0

Wszystko zależy od tego z jakich klas w Javie chcesz korzystać do odczytu pliku.

0
themarcq napisał(a)

Czyli java w jakis inny sposob zapisuje dane do pliku niz cpp?
Język ma hóija do tego..
to co zrobiłeś w cpp konwertuje int do stringa i wtedy wysyła to do strumienia...
to co zrobiłeś w Javie to inna sprawa... datainputstream nie bawi się w taki idiotyzm jak zapisywanie/czytanie int jako string, tylko wyśle/wczyta 4 bajty w formacie big endian

Myśl co robisz albo daj sobie spokój, bo perfidnie wchodzisz w bagno olewając wszystkie znaki ostrzegawcze...

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