Î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.
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.
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
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?
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
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.
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.
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
Î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]
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.
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]
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.
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]
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?
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/bin
Apoi rulează aplicaţia:java -jar nume_aplicatie.jar
[url=http://counter.li.org/]Linux registered user #368449[/url]
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?
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]
DA, am creat manual jar-ul, iar despre manifest nu am habar ce inseamna.
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" .
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:
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.class
Problema 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.Exemplu
Exemplu 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]