Czy jest możliwe ustawienie, aby aplikacja uruchamiała się na Linuksie, a na Windows już nie?

0

Hej :)

Być może pytanie nieco niecodzienne, bo skoro Java, to "napisz raz i uruchom gdziekolwiek", jednakże zastanawiam się, czy pisząc dany program, można zablokować jego uruchamianie się na danym systemie operacyjnym?

Przykładowo: zamierzam napisać sobie małe GUI dla Linuksa, które wykonywać będzie wcześniej przygotowane skrypty operujące na bashu, bądź być może uruchamiające komendy basha bezpośrednio jeśli się da (automatyzacja czynności poinstalacyjnych). Być może program opublikuję w internecie, ale będzie on użyteczny wyłącznie dla Linuksa, zatem jeśli uruchomi go ktoś na Windows - aplikacja będzie kompletnie nieprzydatna. W zasadzie ograniczenie aplikacji do konkretnego OS to nie problem pisząc np. w C++ czy C#, ale to Java ;)

Czy możliwe jest zatem, aby ograniczyć działanie aplikacji w Javie do konkretnego systemu operacyjnego? A może po prostu się tym nie przejmować i wyraźnie zaznaczyć w ReadMe, że to program dla konkretnego OS i jest nieprzydatny nigdzie indziej?

Pozdrawiam,
Krystian

1

jeżeli chcesz tylko na systemach unixowych to najgłuszy sposób jaki mi przychodzi do głowy do weź SystemgetProperty(file_separator)

na systemach uniksowmych jest / ma ma windach \ :) w ten sposób prostym ifem na wejściu sprawdzisz na jakim systemie jesteś. Możesz też pobrać os_name ale nie wiem czy tak łatwo będzie sprawdzić na jakim jesteś os-ie

pzdr

1

możesz też 

if(!System.getProperty("os.name").equalsIgnoreCase("linux"))
			System.exit(2);

;]

na twoim miejscu jednak bym to olała.

1

A ja bym taką blokadę olał. Za dużo paprania się z tym wszystkim. Sprawdzania i kombinowania, a na koniec i tak się znajdzie jakiś h4xi0r co to obejdzie dla sportu. Jeżeli już chcesz mieć pewność, że uruchomienie będzie możliwe tylko na linuxie to najlepiej jest przygotować sobie jakąś małą pojedynczą natywną metodę w C i skompilowac ją pod linucha. Następnie na starcie aplikacji ładujemy ją sobie przez System.load i wywołujemy. Jak się wywali to windows. Co prawda można i to obejść, ale wymaga już pewnej ogłady w pisaniu kodu.

0
karolinaa napisał(a):

możesz też 

if(!System.getProperty("os.name").equalsIgnoreCase("linux"))
			System.exit(2);

Dziękuję, wygląda na to, że działa. Pod Linuksem GUI odpala, pod Windows...nie dzieje się nic, aplikacja nie uruchamia się :) Nawet, jeśli znajdzie się w tym jakaś luka, to zawsze coś :)

Serdecznie dziękuję Wam za poświęcony czas, rozwiązanie problemu i pomocne rady :)

0

Ale to bez sensu trochę. A jak mam cygwina na windowsie? Twoja aplikacja pewnie by mi zadziałała, ale się teraz nie uruchomi...

0

Takie blokady są bezsensu i najczęściej przynoszą więcej szkody niż pożytku.
Ja w licencji wypisałbym "Supported platfroms", a jeśli ktoś uruchamia na innej platformie to na własne ryzyko i niech nie ma pretensji, że coś nie działa.

Zapewne uruchomienie na innej platformie kończy się jakimś wyjątkiem, więc najlepiej go łapać w odpowiednim miejscu i wyświetlić userowi błąd "This functionality is not supported on this platform" (o wiele lepsze niż crash).

Pamiętaj, że poza Windowsem i Linuxem są inne platformy: OS X, Unix, Solaris, ... . Zapewne niektóre z nich będą na tyle kompatybilne z Linuxem, że twój kod zadziała poprawnie.

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