[jar], -xmx, problemy z uruchomieniem programu

0

Witam

Napisałem ostatnio sobie programik w javie w Netbeansie.
Dzisiaj chcaiłem zrobić sobie z mojego programu paczkę jar. W programie mam utworzone 2 dodatkowe foldery (w jednym przechowuje obrazki i w drugim mam tablicę liczb). Po utworzeniu przez program paczki jar skopiowałem oba foldery (z plikami z których korzysta program) do lokalizacji w którym znajduje się plik jar

Teraz mam kilka problemów.

  1. W jaki sposób mogę przy uruchamianiu programu zwiększyć maksymalną ilość pamięci jaka jest przydzielana wirtualnej maszynie java. Podczas kompilacji programu w Nebeansie w ustawieniach parametrów dla uruchamiania programu skorzystałem z parametru -Xmx1024m. Ale po zrobieniu paczki jar niestety opcja ta już nie działa

  2. Jeżeli program uruchomie za pomocą komendy "java -jar nazwaPaczki" to wszystko działa poprawnie. Natomiast jeśli uruchomie poprzez dwukrotne kliknięcie to program nie wczytuje mi danych z dwóch skopiowanych folderów (obrazków i tablicy z liczbami) Program się uruchamia normalnie ale nie wczytuje mi tych danych.

  3. Jeśli mam paczkę jar i uruchomię ją za pomocą komendy "java -jar nazwaPaczki" to dlaczego program działa mi o wiele wolniej niż jak uruchomie go w Netbeansie?

Z góry dziękuję za wszelkie odpowiedzi

0
  1. napisać bat/sh do uruchomienia albo wykorzystać java web start i dodać odpowiednie opcje w jnpl.
  2. Czy w manifeście jest flaga Main-class?
  3. Optymalizacje NB pewno działają.
0
  1. Ok dzięki zaraz poszukam i się pobawię :)
  2. w manifeście mam "Main-Class: src/rsr/RSRView"
    Lecz z plików z tych folderów nie korzystam w tej klasie lecz w trakcie działania programu inne klasy z nich korzystają
  3. Nie myślałem, żeby w NB programy działały o ponad 200% szybciej
0
  1. powinna być nazwa pakietowa, a nie ścieżka w systemie plików.
  2. zdarza się. Weź pod uwagę, że NB ma znacznie więcej pamięci do dyspozycji. Dodanie opcji powinno wyrównać szanse ;)
0

-Xmx i inne takie nie moga byc ustawiane w Jarze. To sa switche JVM, ktore decyduja jak dziala, natomiast wykonywalny JAR to aplikacja ktora nie ma nad tym wladzy. Poza tym manifest jest wczytany po starcie JVM, wiec Xmx jest ignorowany. Musisz zrobic jak napisal Koziolek: skrypt albo jnlp, wzglednie exec, ale skrypt latwiej.

0

Co do pytania nr 2

Właśnie sprawdziłem plik MANIFEST.MF który znajduje się w paczce jar w katalogu META-INF i jest w nim flaga "Main-Class: rsr.RSRApp" Jest to główna klasa. Lecz jeśli uruchamiam paczkę normalnie to program mi nie wczytuje danych z folderów z poza paczki. Natomiast jeśli uruchamiam komendą java -jar nazwaPaczki.jar to program działa poprawnie. Więco to chyba wina braku nazwy głównej klasy w pliku manifest.

0

Ok temat zamknięty

Stworzyłem sobie skrypt sh. Przy uruchomieniu programu dodałem dodatkowy parametr dla javy xmx i wszystko działa tak jak powinno :) Program działa równie szybko jak w NB :)

Dzięki za pomoc :)

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