Ścieżka do jpg w Windows a UNIX

0

Witam mam problem z ścieżka do przycisków, chodzi mi o coś takiego:

String sciezka_jpg="jpg/";
JButton obrazek = new JButton(new ImageIcon(sciezka_jpg+"klodka.jpg"));

Jak widać mamy tak, w przyciskach sa jpg które określam ścieżka. program miał działać lokalnie ale się to zmieniło. Wykonuje tylko obliczenia wiec nie ma tu problemów z dostpem do baz etc... Program udostępniłem na windows 2003 przez sasób. I teraz gdy odpalamy go z innego widndows z zamapowanego dysku to wedle ścieżęk: jpg/klodka.jpg odpala się i dizała. Problem pojawia sie z UNIXIE Niestety nie widzi obrazków. Domyślam się że notacja musi byc jakaś inna?

Chciałbym uzyskać jeden program do pracy pod win i uxixem, wobec tego jak mam ustawic te scieżki.

0

Przerobiłem to na adres

String sciezka_jpg="//medic/CRM/jpg/";
String sciezka_jpg="//10.0.0.1/CRM/jpg/";

Ale tez nie działa, UNIX chyba nie uzywa backslash tylko shlash Ale w jawie to znak przejscia do nowej linie Nie wiem co zrobić Jeśli ktoś się orintuje prosze opomoc

0

"jpg"+File.separator+"klodka.jpg"

0
Aiden napisał(a)

UNIX chyba nie uzywa backslash tylko shlash Ale w jawie to znak przejscia do nowej linie

WTF?
Unix uzywa slasha /, windows uzywa backslasha , ale slashe tez dzialaja. Przejscie do nowej lini to \n, zaden slash czy bashslash.

Obrazki masz spakowane do jara czy w jakims katalogu ktory lezy obok jara? Program uruchamiasz klikajac na jara czy z lini polecen (oba systemy)? Mozliwe ze np dwuklik pod linuxem czy co tam uzywasz nie dziala ladnie z wzglednymi sciezkami. Za malo informacji, odpowiedz na pytania.

0

Jeśli to miało być tak :

String sciezka_jpg="jpg";
JButton obrazek = new JButton(new ImageIcon(sciezka_jpg+File.separator+"klodka.jpg"));

albo tak:

String sciezka_jpg="jpg/";
JButton obrazek = new JButton(new ImageIcon(sciezka_jpg+File.separator+"klodka.jpg"));

albo

String sciezka_jpg="./jpg/";
JButton obrazek = new JButton(new ImageIcon(sciezka_jpg+File.separator+"klodka.jpg"));

to nie pomogło ;/

0

Odpalam z swing z okna w obu systemach przez kliknięcie ikony, nie z konsoli. Pliki leża w katalogu jpg obok jara

0

A jak się nazywa plik? "klodka.jpg", czy może "Klodka.jpg"? Unix jest case-sensitive.

0

klodka.jpg, nazywaja sie poprawnie jest ich wicej. I nazwy podałem poprawne bo przeciez pod windowsme działa;)

0

Moim zdaniem pod unixem w srodowisku graficznym ktorego uzywasz sciezki dzialaja inaczej niz w windowsie i tyle. Nie mozesz spakowac obrazkow do jara i uzywac getResource/AsStream? Jakiego uzywasz managera okienek? KDE czy Gnome?

0
  1. katalog udostepniam pod Windowsem2003
  2. w katalogu znajduje jar oraz katalog jpg
  3. mapuje na XP udostepniony katalog, odpalam z jara z udostepnionego katalogu odwoluje sie do udostepnionych plików w katalogu jpg Wszystko cacy
    sciezka w przyciskach: "jpg"+File.separator+"klodka.jpg
    Montuje udostepniony zasob pod kde unixa MOntuje sie:

smd://medic/rogram/
i tu znajduje sie plik z jarem i jpg

Odpalam jara zamontowanego z zamopowanego zasobu i nie działa.

0

No właśnie nie mogę bo maja być podmieniane ;/ ciągle, taka prośba zleceniodawcy ;/

0

Zaraz zaraz. Czy ja dobrze rozumiem - katalog z obrazkami to jest share windowsowy, i chcesz do niego miec dostep pod linuksem?

0

Tak chce, a to jakiś problem?

0

Nie doczytalem Twojego ostatniego posta.
czy problem - oczywiscie, inaczej bys nie pytal na forum, prawda? :-P
Mozesz zrobic test - zrob prosty programik ktory wypisuje na ekran wartosc new File(".").getPath() i umiescic go na tym share, i sprawdzic co wypisuje windows a co wypisuje unix. Juz bedziemy madrzejsi.

0

No tak moge napisac, juz pisze, Ale co tobi ta komenda? getPath()

0

Od razu napisz zeby wywalalo 3 wartosci moze: getPath(), getAbsolutePath() i getParent(). Opis funkcji w API.

0

Ok już mam, zaraz odpale na Unixie ;)

0

No faktycznie jest inaczje Pod windowsem jest tak jak powinno byc \medic\Program
a od UNIXEM \home\jasio\ Czyli co jak zmienie sciezke na \home\jasio\ to juz zadziała tylko pod Unixem A co zrobic aby on odwoływal sie tak jak w przypdaku windowsa?

0

No to pytanie właściwie z innej beczki, dlaczego on traktuje zamapowany zasób nie jako zrodlo //medice/program tylko jako domowy . No to trafiłem na problem ;/

0

Jak montujesz jakis zasob to wskazujesz mu miejsce w systemie plikow pod ktory ma zamontowac, np /samba/server. Musialbys chyba napisac jakis taki kod ktory by pobieral pelna, absolutna sciezke programu/jara, i do niej dolaczal separator i nazwe katalogu z jpegami. Cos takiego:
KlasaProgramuWJarze.class.getProtectionDomain().getCodeSource().getLocation().getPath() (byc moze bedziesz musial wywolac inne metode URL jak getFile czy costam, juz pozostawie Tobie)
i masz sciezke do katalogu ktory ma twoj jar. Teraz do tego doklej separator + katalog + separator + plik.jpeg.
Sprawdz czy dziala.

0

URI uri = Test.class.getProtectionDomain().getCodeSource().getLocation().toURI();
File f = new File(uri);
System.out.println(f);

0

Ok będę testował ;) dzięki za pomoc

0

Pobawiłem się troche i okazuje sie że gdy odpalam go z udostapnionega zamapowanego zasobu To jako sciezke wyjsciowa uwaza miejsce w ktorym został zamapowany. Czyli katalog domowy urzytkownika. Natomiast jak odpale cd /opt/program; java -jar program.jar Za swoje katalog wyjsciow (tam gdzie odwołuja sie sciezki w przyciskach etc...) przyjmie katalog uruchomienia ;)
Pobawie się jeszcze z parametrami. Ale na przyszłości jeśli ktoś będzie potrzebował Kwestia odpalenia w UNIXIE

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