Aplicatie java

13 posts / 0 new
Last post
Valentin Bojin
Aplicatie java

Am o aplicatie facuta in Java dar in WindowsXp.

Cum fac un executabil pt aceasta aplicatie ca sa o pot rula in linux?

Multumesc.

cosmin
cosmin's picture
Re: Aplicatie java

În primul rând mutăm la programare :-)
În al doilea rând, căutăm să răspundem întrebării:

Java se mândreşte cel mai mult şi cel mai mult cu ideea de write once, run anywhere. O aplicaţie Java obişnuită, destinată desktop-ului, fie ea de tip consolă sau Swing, nu conţine cod nativ. Probabil că a ta este formată dintr-o mulţime de fişiere bytecode (.class), şi eventual niscaiva resurse (.xml, .jpeg sau mai ştiu eu ce). Eventual, totul ar fi împachetat într-un jar. Toate astea le interpretează maşina virtuală Java.

Nu are nici cea mai mică importanţă sistemul de operare pe care rulezi aplicaţia, atât timp cât nu ai folosit JNI (adică să fi amestecat bytecode cu cod nativ).

Dacă e jar, atunci comanda e simplă:java -jar aplicatia_ta.jar

Desigur, pe Linux-ul tău trebuie să ai instalat Java Runtime Environment şi să pui în $PATH calea către fişierele binare ale JRE.

[url=http://counter.li.org/]Linux registered user #368449[/url]

Valentin Bojin
Re: Aplicatie java

Si daca vreau sa fac un setup al programului in linux cum fac?

As dori si un link de unde pot sa iau Jbuilder de linux
Multumesc mult pentru raspunsuri.

cosmin
cosmin's picture
Re: Aplicatie java

Pentru un setup, eu aş face un script BASH care să verifice dacă e Java pe maşină, să despacheteze o arhivă (dacă e cazul), şi să copieze nişte fişiere.

JBuilder am văzut că se poate lua de la Borland, ca demo, de pe pagina de download.

Îţi recomand cu căldură Eclipse! E un IDE excelent pentru Java, şi e open source ;-)

[url=http://counter.li.org/]Linux registered user #368449[/url]

Valentin Bojin
Re: Aplicatie java

Cosmin a zis:
" Desigur, pe Linux-ul tău trebuie să ai instalat Java Runtime Environment şi să pui în $PATH calea către fişierele binare ale JRE."

Am instalat JRE-ul , dar nu stiu unde gasesc $PATH si ce fisere sa pun acolo ?

Ajutor pls.

cosmin
cosmin's picture
Re: Aplicatie java

M-am referit la variabila de sistem PATH.
Ideea este să poţi lansa Java în execuţie scriind "java" în linia de comandă. Acest lucru ar merge dacă executabilul java s-ar afla în directorul /bin. Nefiind acolo, shell-ul îl mai caută şi într-o listă de directoare care este reţinută într-o variabilă. Acolo trebuie să adaugi directorul bin din JRE-ul tău.
De exemplu, pe maşina mea, am făcut aşa:export PATH=$PATH:/usr/local/java/jdk1.5.0_06/bin
Mai multe căi sunt separate prin : (două puncte).
Ca să nu scrii comanda după fiecare login, o poţi pune în fişierul ~/.bashrc

[url=http://counter.li.org/]Linux registered user #368449[/url]

Valentin Bojin
Re: Aplicatie java

Am instalate urmatoare (pe distro Mandriva 2006) :
- in directorul: /usr/java/ jdk 1.5.0-03 si jre 1.5.0-03
Si in JDk si in JRE am un director /bin care contine " java".
Am copiat jar-ul de la aplicatia mea in: /usr/java/jdk 1.5.0-03/bin si am lansat comanda:
java -jar nume_aplicatie.jar si imi zice:
" bash:/bin/java: No such file or directory"

Ce pot sa fac in cazul acesta, deoarece aplicatia mea de tip jar e in acel director?

cosmin
cosmin's picture
Re: Aplicatie java

Nu trebuie să pui aplicaţia lângă binarele Java. Nu este necesar, şi în plus e prea complicat. Pune aplicaţia oriunde în directorul tău. Apoi adaugă directorul cu binarele Java în variabila PATH:export PATH=$PATH:/usr/java/jdk_1.5.0-03/binApoi rulează aplicaţia:java -jar nume_aplicatie.jar

[url=http://counter.li.org/]Linux registered user #368449[/url]

Valentin Bojin
Re: Aplicatie java

NU reusesc nici cum sa rezolv problema! Am facut o aplicatie simpla in java doar sa imi afiseje un mesaj si anume : "HELLO JAVA", si nici asa nu merge.

Am procedat in felul urmator:

1) export PATH=$PATH:/usr/local/java/jdk1.5.0_06/bin
2) java -jar linux.jar
Invalid or corrupt jarfile linux.jar
3) java linux.jar
Exception in thread "main" java.lang.NoClassDefFoundError: linux/jar

Fisierul "linux.jar" contine : linux/Main.class

Ce este gresit sau ce omit?

cosmin
cosmin's picture
Re: Aplicatie java

Ai creat manual jar-ul sau ţi l-a generat mediul de dezvoltare? Poate ai uitat să pui manifestul. Dacă nu ştii ce e manifestul, mai întreabă, şi lămurim.

[url=http://counter.li.org/]Linux registered user #368449[/url]

Valentin Bojin
Re: Aplicatie java

DA, am creat manual jar-ul, iar despre manifest nu am habar ce inseamna.

Valentin Bojin
Re: Aplicatie java

Am citit pe net despre manifest iar ceea ce am vazut legat de asta era ca : acel manifest contine date despre producator(SunSys.).

Din Jbuilder nu am nici o optiune de a genera un manifest, sau cum creez un manifest?

Daca doreste cineva sa discutam pe messenger , id-ul meu este:

" contylab" .

cosmin
cosmin's picture
Re: Aplicatie java

Dacă ai o aplicaţie foarte mică, un Hello World!, atunci nu are rost să faci jar. Presupunând că ai un singur fişier sursă, care conţine o funcţie main(), îl compilezi şi apoi rulezi bytecode-ul obţinut:

javac Exemplu.java
java Exemplu

Dacă ai mai multe fişiere sursă, eventual organizate în unul sau mai multe pachete, atunci e mai comod să realizezi un jar. Un jar nu este altceva decât o arhivă, la fel ca zip. Se creează la fel ca şi un tar:jar cf aplicatie.jar File1.class [...] FileN.classProblema este acum ca Java să îşi poată da seama pe unde se intră în program. Altfel spus, care din fişierele din jar conţine funcţia main(). Acest lucru trebuie să îl scrii într-un fişier Manifest.txt. În el scrie linia următoare:Main-Class: NumePachet.ExempluExemplu este numele clasei care conţine funcţia main(), iar NumePachet poate lipsi, dacă nu ai creat pachete (deşi ar trebui). Atenţie, fişierul trebuie să se termine cu rând nou!
Ca să creezi un jar cu manifest scris de tine, foloseşte comanda:jar cfm aplicatie.jar Manifest.txt NumePachet/*.class

Îţi recomand să citeşti din Java Tutorial capitolul despre JAR.

[url=http://counter.li.org/]Linux registered user #368449[/url]