Nie może znaleźć klasy przy uruchomieniu .jar'a

0

witam,
dlaczego przy uruchomieniu jar'a wyskakuje mi taki blad

error in thread "main" java.lang.NoClassDefFoundError: C:\CUS\modern/jar

plik ten uruchamiam dwukrotnie klikajac na niego.. teoretycznie powinno byc wszystko dobrze, bo przeciez sciagajac z Internetu plik .jar powinien byc on gotowy do uzytku prawda/
co moze byc zle?
dodam tylko, ze w pliku modern.jar po rozpakowaniu jest tylko plik manifestu, a on wyglada tak:

Manifest-Version: 1.0
Class-Path: data/osejs.jar data/alllocales.jar Simulations/_library/ej
sBasic.jar
Created-By: 1.4.2_04 (Sun Microsystems Inc.)
Main-Class: org.colos.ejs.osejs.OsejsLauncher

folder data jest w folderze CUS, a folder org/colos/ejs/osejs/osejslauncher jest w CUS\data\osejs.jar

pozdrawiam
Ka-lolek

0

głupi błąd w samej javie :) spróbuj z lini poleceń
java -jar osejs.jar
Po prostu java nie rozpoznaje automatycznie plików jar :)

0

no dzieki, dziala ale jak wpisalem java -jar modern.jar
ale powiedz mi jak to mozliwe, ze java nie rozpoznaje automatcznie plikow jar?
no to co rozpoznaje?
Sry, ale jezeli .jar to jest mozna powiedziec glowny plik wykonawczy javy, to laski nie robi, chyba musi to rozpoznac i po dwukrotnym nacisnieciu sie uruchomic, a nie, ze uzytkownik bedzie musial za kazdym razem wchodzic do konsoli zeby cos uruchomic...
jak to jest?
pozdro

0

Ponieważ jar nie ma sensu "uruchamialnego pliku" jak np. exe, a raczej działa jako biblioteka kodu (można skompresować algorytmem zip). Coś na kształt plików .dll. Należy zatem powiedzieć Javie, żeby traktowała danego jara jako coś co można uruchomić.
W sumie nie jest to błąd, a zamotka z sensem plików jar. Przyjęło się iż można je uruchamiać, ale ich głównym zadaniem jest archiwizacja kodu. Lepiej przygotować razem z kodem trzy pliki jeden sh, drugi bat, trzeci dla Maców i w procesie kompilacji kazać np. Antowi lub mavenowi tworzenie odpowiednich skryptów uruchamiających.

0

W katalogu bieżącym można mieć różne pliki Babcia.jar oraz Babcia.zip zawierające klasy oraz manifest wskazujący na klasę startową. Co miałoby się uruchomić po poleceniu java -jar Babcia ?
Pozdrawiam
Bogdan S.

</u>
0

nic :) nie ma takiego pliku jak Babcia. Na całe szczęście Java "myśli" w sposób linuxowy i należy jej podawać precyzyjne nazwy plików. Unika isę wtedy takich problemów jak powyższy.

0

Jak to Java nie rozpoznaje automatycznie plików .jar, skoro jak ja 2 razy na któryś kliknę to mi się program włącza?

0

@Crane, a jak masz ustawiony program powiązany z plikami jar? Java po instalacji domyślnie wiąże jary z komendą java, a nie java -jar.

0

Nie wiem gdzie to sprawdzić ;-P. Zainstalwoałem tylko JRE, JDK i NetBeans i nic nie zmieniałem w ustawieniach Javy. Mam Java 6.

EDIT: Pliki jar mają ikonkę Javy, jeśli to coś da :)

0

czyli w Javie 6 pewno poprawili instalator. A sprawdzić można to gdzieś w panelu sterowania :)

0

Jesteście pewni, że "nowa" Java podczas instalacji (Windows) wiąże rozszerzenie jar z poleceniem java ?
U mnie pliki *.jar zostały powiązane z poleceniem javaw.
Pozdrawiam
Bogdan S.

0

@Crane, a jak masz ustawiony program powiązany z plikami jar? Java po instalacji domyślnie wiąże jary z komendą java, a nie java -jar.

CO to oznacza w praktyce? Ze po doubleclicku na plik.jar jest wykonywana komenda java plik.jar a nie java -jar plik.jar tak?

JEdnak czasami mozna uruchomic jar'a dwuklikiem co pokazuje pryzklad Crane'a takze co mam zrobic zeby i w moim przypadku się udało?
Ponadto w instrukcji również jest napisane, ze wystarczy kliknac dwukrotnie zeby dzialalo.. no a niestety u mnie tak nie jest
no i mam JRE 6 update 2 (wcozraj sciagane)

0

Javy6 jeszcze nie instalowałem pod windowsem, ale jak widać wiele zależy od pewnego czynnika losowego.

0

hehe no niestety chyba tak się dzieje.. no ale może ktoś będzie lepiej poinformowany od nas i to wyjaśni..

0

U mnie zawsze po dwukliku na jara system odpalał javaw -jar PLIK i nigdy nie miałem z tym problemu.

Ponadto w instrukcji również jest napisane, ze wystarczy kliknac dwukrotnie zeby dzialalo.. no a niestety u mnie tak nie jest
no i mam JRE 6 update 2 (wcozraj sciagane)

W czasie instalacji trzeba chyba zafajkować coś na kształt "integrate with IE", wtedy będzie działać. Jak nie to trzeba ręcznie poprawić powiązanie jarów z javawem.
Pozdrawiam

0

jak ręcznie poprawić to powiązanie?

0

W Windows XP narzędzia -> opcje folderów -> typy plików -> nowy -> rozszerzenie jar a potem dodajemy do jara nowa akcje i wpisujemy polecenie
Pozdrawiam

0

okazało się, że już miałem ten typ i otwiwerane za pomocą "java Platform SE binar" typ plikow Executable Jar File...
czyli muszę jeszcze w zaawansowanych dodać nową akcje?
i co wpisać do pola akcja i "aplikacja używana do wykonania akcji"?
pzdr i thx

0

pomoże ktoś?

0

To ze java nie uruchamia jar dwuklikiem, to jakas bzdura! nie wazne czy stara, czy nowa wersja - jar to nie tylko biblioteka, ale wlasnie plik wykonywalny javy!

pozdrawiam

0

to niestety nie jest bzdura,
sam się o tym przekonałem na własnej skórze i teraz chcę wiedzieć czy można to jakoś naprawić.

0

Akurat rozpracowuję problem przydzielania ikonek do plików przez system. Swojego problemu nie rozwiązałem, ale za to wiem o co chodzi z tym jar. Windows wiąże rozszerzenia plików z aplikacją do uruchamiania, a właściwie z komendą. Oczywiście zapisuje to w rejestrze. Po uruchomieniu edytora rejestru proponuję wyszukać frazę:
Executable Jar File
U mnie takowa występuje dwa razy. W podkluczu command jest polecenie:
"C:\Program Files\Java\jre1.6.0_01\bin\javaw.exe" -jar "%1" %*
No i dodam jeszcze, że u mnie działa.

//EDIT: Afish wspominał o opcjach folderów. Poza tym, że jest tam opis, że otwierany za pomocą Platform SE, to w zaawansowanych jest możliwość edycji komendy. I to ta komenda ma znaczenie, zwłaszcza w sytuacji, kiedy jest zainstalowane JRE i SDK, albo jeszcze inna wersja i jeszcze deinstalacja była. Wtedy może być tak, że komenda odnosi się do nieistniejącego exeka, który kiedyś tam był.

0

u mnie pomogla tez edycja zmiennych srodowiskowych (czasem zostaje stara werja javy) we wlasciwosciach "Moj Komputer"

pozdrawiam

0
eximius napisał(a)

To ze java nie uruchamia jar dwuklikiem, to jakas bzdura! nie wazne czy stara, czy nowa wersja - jar to nie tylko biblioteka, ale wlasnie plik wykonywalny javy!

pozdrawiam

grrr.... nie zgodzę się. Pliki Jar to przede wszystkim archiwa a potem pliki wykonywalne. Cytat z http://java.sun.com/developer/Books/javaprogramming/JAR/

The Java Archive (JAR) File Format

The Java Archive (JAR) file format enables you to bundle multiple files into a single archive file. Typically a JAR file will contain the class files and auxiliary resources associated with applets and applications.

Note: The JAR file format was introduced in version 1.1 of the Java Development Kit, and version 1.2 includes several enhancements to JAR file functionality. Unless otherwise noted, features covered in this trail pertain to both versions 1.1 and 1.2. If a feature description or example pertains only to one version, you'll be alerted with an annotation such as "version 1.2."

dodatkowo pod adresem http://java.sun.com/developer/Books/javaprogramming/JAR/basics/run.html jest takie coś:

JAR Files as Applications - 1.2 platform only

In version 1.2 of the JDK software, you can run JAR-packaged applications with the Java interpreter. The basic command is:

java -jar jar-file

The -jar flag tells the interpreter that the application is packaged in the JAR file format.

Note: The -jar option is not available for interpreters prior to version 1.2 of the Java Development Kit.

Before this command will work, however, the runtime environment needs to know which class within the JAR file is the application's entry point.

To indicate which class is the application's entry point, you must add a Main-Class header to the JAR file's manifest. The header takes the form:

Main-Class: classname

The header's value, classname, is the name of the class that's the application's entry point.

To create a JAR file having a manifest with the appropriate Main-Class header, you can use the Jar tool's m flag as described in the Modifying a Manifest section. You would first prepare a text file consisting of single line with the Main-Class header and value. For example, if your application was the single-class HelloWorld application, the entry point would of course be the HelloWorld class, and your text file would have this line:

Main-Class: HelloWorld

Assuming your text file was in a file called mainClass, you could merge it into a JAR file's manifest with a command such as this:

jar cmf mainClass app.jar HelloWorld.class

With your JAR file prepared in this way, you can run the HelloWorld application from the command line:

java -jar app.jar

można zatem powiedzieć iż możliwość uruchomienia pliku .jar przez java weszło dopiero w wersji 1.2, wcześniej w 1.1 należało użyć
jre -cp app.jar MainClass

0

no tak - do 1.1 sie nie cofalem, wiec co do tego przyznaje racje, jednak od tego czasu w java swiecie wiele sie zmienilo... ;)

pozdrawiam

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