plik manifest i pliki jpg txt itp.

0

hey :-) od kilku dni zapragnelam napisac aplikacje w javie....a wczesniej programowalam sporo w C++...wiec nie bylo wiekszych problemow..poza jednym wlasnie:
mam pliczek Warcaby.class i towarzyszace mu pliki klas skladowych (wewnetrznych) Warcaby$* ... ble ble, oraz pliki obrazkow *.jpg ktore uzywam w klasie Warcaby.class
... wszystko jest oki .... ale mam problem z archiwum jar.... kiedy utworze sobie wlasny pliczek manifest.txt , w ktorym mam Main-Class: Warcaby + nowa linia i wolam jara w postaci:
jar cvfm Warcaby.jar manifest.txt *.class *.jpg ---> wszystko jest oki.
Problem w tym ze kiedy wolam : java -jar Warcaby.jar odpala mi sie programik ...ale nie widzi obrazkow !!!, natomiast jesli recznie skopiuje te pliki do sciezki gdzie siedzi Warcaby.jar wszystko jest OKI :-)
Mam pytanko czy w pliku manifest.mf jest jakis zonk? , czy trzeba uzyc jakies skladni aby zamanifestowac obecnosc plikow z obrazkami, tekstem, dzwiekiem itp? tak jak robi sie to z klasa Warcaby??? i jesli tak to jak? bo w dokumentacji nie znalazlam odp. tipsu :-)
PROSZE niech mi ktos pomoze !!!!
ps. chce koniecznie przesiąść się z Buildera na Jave....
fanom gier planszowych polecam moj programik edukacyjny WarcaboweABC ...do pobrania z
http://warcaby64.republika.pl

0

bylo juz gdzies na forum... MojaKlasa.class.getResourceAsStream (jakos tak)

pozdrawiam

0

Napisałem kiedyś taką klasę do czytania obrazków z plików jar (zip), może Ci się przyda

/* Uniwersalna klasa odczytująca zasoby programu z pliku jar(zip)
 * Obecna wersja posiada dwie metody static:
 * dwuargumentowa metoda ImageIcon readIcon(String nazwa_pliku_jar,String nazwa_pliku_graficznego)
 * trójargumentowa metoda ImageIcon readIcon(String nazwa_pliku_jar,String nazwa_pliku_graficznego,boolean czy_odczytac_ikone_z_pliku_gif)
 */
import javax.swing.*;
import java.util.jar.*;
import java.util.zip.*;
import java.io.*;

public class ReadFromJar
{
    public static ImageIcon readIcon(String nameOfFile,String nameOfPicture,boolean seekFile)
    {
        ImageIcon ikona=null;
        try
        {
            JarFile jf=new JarFile(nameOfFile);
            ZipEntry ze=jf.getEntry(nameOfPicture);
            InputStream is=jf.getInputStream(ze);
            byte[] bufor=new byte[(int) ze.getSize()];
            is.read(bufor);
            is.close();
            ikona=new ImageIcon(bufor);
        }
        catch (IOException e)
        {
            if (seekFile)
            {
                ikona=new ImageIcon(nameOfPicture);
            }
        }
        return ikona;
    }
    //------------------------
    public static ImageIcon readIcon(String nameOfFile,String nameOfPicture)
    {
        return readIcon(nameOfFile,nameOfPicture,false);
    }
}

pozdrawiam

0

problem rozwiązany :-)
caly knyft polagał na tym że archiwum jar w trakcie odpalania java -jar Plik.jar...jest rozpakowywany w locie i zamiast bezposredniego odwolania do nazwy pliku plik.jpg (ktore dziala przy zwyklym wolaniu java plik)...trzeba uzyskac dostęp do zasobów, czyli upraszaczając nalezy w pliku zrodlowym zamienic wszystkie bezposrednie odwolania do plikow z obrazkami na odpowiadającą im funkcje getResource obiektu ClassLoader.
czyli:

  1. tworzymy np w konstruktorze obiekt typu ClassLoader:
    ClassLoader cl=this.getClass().getClassLoader();
  2. w miejscach gdzie pobieramy obrazki (funkcja getImage) zamiast np. ciągu getImage("obrazek.jpg") wpisujemy:
    getImage(cl.getResource("obrazek.jpg"))
    i dalej juz wszystko jest OKEY !
    ...moze komus się to jeszcze przyda :-)

...

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