Mam program, który pisałem w Javie na Windowsie. Na Linuksie nie chce on niestety działać. Nie chce tworzyć nowych plików. Jak temnu zaradzić? Linux SuSE - to mój pierwszy Linux, w ogóle na tym systemie się nie znam.
Po pierwsze sprawdź czy ścieżki podajesz z \ czy z / druga opcja jest lepsza bo działa zarówno pod windą jak i pod linuxem.
Po drugie sprawdź czy masz uprawnienia do tworzenia plików tam gdzie chcesz. Polecenie ls -la w konsoli + manual jak czytać wynik.
zamiast / lub \ uzyj File.separator i przechwytuj wyjatki (one powiedza co jest nie tak)!
pozdrawiam
W programie używam File.separator, a wyjatek mówi, że nie ma takiego katalogu ani pliku :(
a mozesz go wkleic?
Pisze, że w natywnej metodzie java.io.UnixFileSystem.createFileExclusively(natywna) używanej w java.io.File.createNewFile wystapił. Wiadomośc to: java.io.IOException: Nie ma takiego pliku ani katalogu.
A mógłbyś podać nazwę pliku, którego nie możesz utworzyć ?
Uzyskałem dokładnie taki sam komunikat wywołując
f.createNewFile();
kiedy w wywołaniu File f=new File(path);
zmienna path zawierała <u>nieistniejący katalog</u>
pozdrawiam
Ale skoro na Windzie to działa...
1.Może na Windzie ten katalog istnieje, a na Linuksie nie ?
2.Zrób coś takiego
- wejdź do katalogu, który jest katalogiem bieżącym w czasie wykonywania programu Javy
- utwórz plik ręcznie (touch nazwa_pliku)
- obejrzyj komunikaty
pozdrawiam
Wyświetliłem nazwy plików i się zdziwiłem. Bo ja utworzyłem je w taki sposób
File file = new File("config" + File.separator + "nazwa.dat")
Na Linuksie zamiast scieżki
folderprogramu/config/nazwa.dat
jest
/home/konrad/config/nazwa.dat
Dlaczego tak się dzieje na Linuksie?
/home/konrad
to zapewne twój katalog domowy (jeśli twój login to konrad), jeśli tam umieściłeś program to folderprogranu=="/home/konrad/"
(na Windzie też ci się coś dopisało z przodu, zapewne cos w rodzaju C:\bleble)
pozdrawiam
No przecież jak tworzę plik new File("nazwapliku") to ten plik powinien byc w tym samym katalogu co program. Jak jak tworzę new File("katalog/nazwapliku") to w katalogu podrzednym. To dlaczego program szuka tego w katalogu domowym? Na Windowsie wszystko świetnie działa i plik jest szukany tam, gdzie trzeba.
No i tam właśnie jest,
/home/konrad/... to pełna ścieżka odpowiednik C:\jakis_tam_katalog
Tyle, że ścieżka z Linuksa pomija mi kilka folderów po drodze. Wycina je po prostu :(
dziwne - u mnie dziala :P
pozdrawiam
U mnie niestety tak jest. Windows gdy jako nazwę pliku podam ciąg znaków, dodaje do niego ścieżkę do aktualnego katalogu, a linux do katalogu domowego użytkownika.
Zrób tak:
Jeśli plik jest w aktualnym katalogu:
./plik
Jeśli plik jest w katalogu domowym aktualnie zalogowanego użytkownika:
~/plik
Jeśli plik jest w katalogu domowym użytkownika konrad
~konrad/plik
./plik nie działa na Linuksie, a na Windowsie tak...
Coś mi się wydaje, że coś jest nie tak z moim Linuksem :(
Czy możecie ściagnąc to: http://chomikuj.pl/dharma4815162342/KeyConfigTest.rar - to jest tutek z jednej ksiażki. Sprawdziłem i okzałao się, że poza moimi programami innych też nie działają. Czyli coś musi być źle z moim SuSE. Dla pewności prosze, aby ktoś z was to pobrał. Wymaga JRE6 Update 3. Wykonywalny plik jest w olderze dist. Czy u Was to działa na Linuksie?
Może ktoś pobrać ten plik?