Ahoj,
potreboval bych poradit s vytvorenim knihovny .jar.
Mam soubory .java obsahujici vice trid a chtel bych z nich vytvorit knihovnu: knihovna.jar.
Prosil bych o nejaky popis postupu jak na to.
predem dekuji :)
Ahoj,
potreboval bych poradit s vytvorenim knihovny .jar.
Mam soubory .java obsahujici vice trid a chtel bych z nich vytvorit knihovnu: knihovna.jar.
Prosil bych o nejaky popis postupu jak na to.
predem dekuji :)
#1 arny
Ake mas IDE?
Pre Eclipse mas navod tu:
http://forum.ics.upjs.sk/viewtopic.php?…
Pre Netbeans zas tu:
http://www.kiwiki.info/…a_v_NetBeans
Alebo z prikazoveho riadku:
#3 arny
V tej 1. ulohe si vytvoris main metodu len pre otestovanie funkcnosti toho balika. Zrejme je urcena na vykreslovanie objektov. Tu jar kniznicu vytvaras preto aby si ju mohol pouzit aj v inych projektoch/aplikaciach, kde bude ina main funkcia. Preto musis odstranit tu prvu main funkciu.
V 3. ulohe mas vytvorit novy package, ktory bude vyuzivat prave tu jar kniznicu. Cize tu si znova vytvoris main metodu a v nej vytvoris kod podla zadania, v ktorom budes volat metody z toho jar. Ak by kniznica jar vytvorena v ulohe 1 obsahovala main funkciu, vznikla by chyba, lebo jedna aplikacia moze mat len jednu main funkciu.
#5 Buco
jo tak to uz chapu a pro vytvoreni simple-graphics.jar si vezmu z ukolu c.2 soubory .class??dam si je do nejake slozky a potom v terminalu pomoci prikazu jar -cf simple-graphics.jar /cestaKsouboru/simple by se mel vytvorit .jar soubor ale ten se mne nevytvori :-/ a potom bych mel k simple-graphics.jar pridat jeste manifest soubor... a pouzivam kdyztak os Linux(Ubuntu).
Promin za hloupejsi otazky ale toto predtim za me delalo IDE, tak o tom nic nevim.
#6 arny
simple-graphics.jar si vytvor priamo z Netbeans, pozri navod tu: http://netbeans.org/…ckstart.html#…
Je to jednoduchsie a jar bude obsahovat uz aj MANIFEST.
#7 Buco
Tak knihovnu simple-graphics.jar uz mam vytvorenou.A ted k ukolu 2 vytvorim si dokument build.xml, ktery bude obsahovat kompilace a vygenerovani simple-graphics.jar:
<?xml version="1.8.1"?>
<project name="simple-graphics" basedir="." default="jar">
<!-- Definice cest -->
<property name="src" value="src" />
<property name="bin" value="bin" />
<property name="dist" value="dist" />
<!-- Smazani predchozich slozek -->
<target name="clean" description="Smazani predchozich slozek">
<delete dir="${bin}" />
<delete dir="${dist}" />
</target>
<!-- Vytvoreni novych slozek -->
<target name="init" description="Vytvoreni novych slozek">
<mkdir dir="${bin}" />
<mkdir dir="${dist}" />
</target>
<!-- Preklad kodu -->
<target name="compile" depends="init" description="Preklad kodu">
<javac includeantruntime="false" srcdir="${src}" destdir="${bin}" />
</target>
<!-- Vytvoreni java archivu -->
<target name="jar" depends="compile" description="Vytvoreni java archivu">
<jar jarfile="${dist}/simple-graphics.jar" basedir="${bin}" />
</target>
<!-- Spusteni celeho skriptu -->
<target name="all" depends="jar" description="Spusteni celeho skriptu" />
</project>
Subor build.xml treba vlozit do korenoveho adresara projektu, cize tam kde mas zlozky src, bin...
Spusta sa z prikazoveho riadku prikazom ant, ale musis "byt" v adresary, cize v korenovom adresary, kde sa nachadza aj build.xml. V Eclipse to ide aj kliknutim pravym tlacidlom na subor build.xml Run -> Ant Build. Vystup bude prave Jar kniznica vytvorena v danom adresary.
#10 Buco
Uz sem se pohl a potrebuju poradit s posledni veci.
Udelal sem ukol 3 v IDE funguje,potom sem napsal ant-skript a vytvoril sem si knihovnu.jar a ted bych potreboval spustit program pres terminal za pomoci java -jar simple-graphics.jar, ale nejdriv potrebuju upravit v simple-graphics.jar manifest, mam tam neco takovyho:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.1
Created-By: 1.6.0_24-b24 (Sun Microsystems Inc.)
Main-Class: zde ma byt cesta k tomu souboru, kde mam metodu main ??jestli jo tak mne to nejde
Vyhazuje to takovou chybu:
/Plocha/10/dist$ java -jar simple-graphics.jar
Exception in thread "main" java.lang.NoClassDefFoundError: InputOutput
Caused by: java.lang.ClassNotFoundException: InputOutput
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: InputOutput. Program will exit.
#11 arny
V MANIFESTE by malo byt nieco taketo
Manifest-Version: 1.0
Created-By: 1.6.0_09 (Sun Microsystems Inc.)
Main-Class: com.programujte.Simple-Graphics
Simple-Graphics je class subor v ktorom sa nachadza main metoda, com.programujte je zas balik, to si musis nastavit podla svojho projektu.
Niekedy je potrebne za posledny riadok v MANIFESTE vlozit este aj prazdny riadok.
#12 arny
Skus si vygenerovat Jar archiv v Netbeans bez skriptu Ant a skus ho spustit. Ak ti pojde spustit tak potom je problem len v tom MANIFESTE alebo build.xml, ktorym vytvaras Jar archiv.
Ak vytvaras aj tento Jar archiv rovnakym build.xml ako v druhej ulohy tak ti tam chyba prave cast na vytvorenie MANIFESTU.
<target name="createJar" depends="compile">
<jar destfile="${deploydir}/${jarname}">
<fileset dir="${bindir}"/>
<manifest>
<attribute name="Main-Class" value="${mainclass}"/>
</manifest>
</jar>
</target>
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku