NetBeans + Egna Libraries = Probs

Permalänk
Medlem

NetBeans + Egna Libraries = Probs

Skall börja läsa en javakurs på distans from den 1 sep och jag tänkte börja komma i gång med NetBeans för att värma upp lite. Tänka köra ett litet exempel från tidigare år då kursen gått. I PDF filen står det att man skall tanka ner lite extra libraries (extra.zip heter den) från webbsidan. Sedan står det att man skall Välja Properties på projeketet och gå in i menyn Libraries. Där skall man välja Add JAR/Folder. Så långt hänger jag med och kommer så pass långt att NetBeans lägger till alla extra libraries. Men problemet är sedan när jag skall använda mig av "imoport". Enligt dokumentet så skall jag kunna komma åt en class i library som heter Input genom att skriva "import extra.Input;" men då säger NetBeans att "package extra does not exist". Vad gör jag fel? bifogar programmerings exemplet nedan.

//Andreas

import extra.Input; public class EttProgram(){ public void action(){ String name = Input.readLine("Ange ditt namn: "); System.out.println("-----------------------------------"); System.out.println("Ett program av" + namn); System.out.println("-----------------------------------"); } } public class Main(String[] args){ public static void main(){ EttProgram prog = new EttProgram(); prog.action(); extra.Output.meddelande("Nu är programmet slut."); } }

Visa signatur

Apple Mackbook Pro 15" Retina 2013

Permalänk
Medlem

Det verkar lite märkligt. Det kanske är så att zip-filen var ofullständig? Om du tittar i de jar-filer som fanns i zip-filen, hittar du någon mapp som heter extra och i den ska det ligga en klass som heter Input?

F.ö. så har du i din test-kod två stycken publika klasser. Det är bara en klass som ska vara publik, dvs. klassen Main gissar jag på - om filen heter Main.java?

Permalänk
Medlem

Angående koden så är det bara jag som skrivit av fel. EttProgram är av private och Main är public. I zip filen jag laddat ner ligger det ca 40 filer (20st .java och 20 st .class) Det är dubletter av varje fil fast en slutar på .class och den andra på .java.

Visa signatur

Apple Mackbook Pro 15" Retina 2013

Permalänk
Medlem

Finns det någon fil som heter Input.class? Fanns det ingen mapp som heter 'extra'? Då känns det som att läraren har lagt upp strukturen fel... Det står inget om att du ska skapa ett eget jar-arkiv av .class-filerna i övningsbeskrivningen?

Permalänk
Medlem

du lägger till librariet du skapar i projektet också?

Visa signatur

LAN i stockholmv9
http://www.hazard.nu

Permalänk
Medlem

Fick bara zipen med filerna. Där står att jag i Add Jar/Folder skall välja extra.zip filen. Det funkar, alla classerna dyker upp till vänster under libraries. Men när jag skriver import extra.Input så kommer meddelandet Package extra does not exist. I zipen finns Input.java och Input.class. har även testat att ta ut filerna och lägga i en mapp som heter extra och sedan lägga till i libraries på det sättet. Samma som innan så kommer filerna fram men extra does not excist.

Visa signatur

Apple Mackbook Pro 15" Retina 2013

Permalänk
Medlem

En lösning på ditt problem:

Packa upp zip-filen till någon temporär katalog, låt säga C:\tmpjava (Alla .java- och .class-filer ska ligga i roten på den här mappen). Skapa mappen C:\tmpjava\extra och flytta/kopiera alla .class-filer till den mappen. Öppna en kommandoprompt, och flytta dig till C:\tmpjava. Kör följande kommando:

jar cvf extra.jar extra

Nu har du skapat ett .jar-arkiv. Länka nu in denna i ditt projekt istället för .zip-filen, och din kod borde fungera. Det är svårt när man inte ser hur filerna är uppbyggda (i .java-filerna definierar man det paket som klassen ska tillhöra), men förhoppningsvis är alla klasser definierade till paketet 'extra'. Annars kan du lägga upp zip-filen så kan jag kanske göra om den till ett .jar-arkiv åt dig.

Permalänk
Medlem

jar cvf extra.jar extra funkar inte hos mig. Kan inte ladda upp filerna i heller. Men de går att tank här http://files.itslearning.com/data/719/C1789/KursInfo/extra.zi...

Edit
pillade runt lite och detta hände när jag testade java jar cf extra.jar extra

Exception in thread "main" java.lang.NoClassDefFoundError: jar
Caused by: java.lang.ClassNotFoundException: jar
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Visa signatur

Apple Mackbook Pro 15" Retina 2013

Permalänk
Medlem

Här är jar-filen:

http://www.2shared.com/file/3795580/f3d9cfa2/extra.html

Det kanske går bättre nu, det borde göra det.

Permalänk
Medlem

Tack du e en ängel!

Visa signatur

Apple Mackbook Pro 15" Retina 2013

Permalänk
Medlem

Du ska inte köra programmet 'java' innan du använder 'jar' för att packa en fil. 'jar' är ett självstående program för packning/uppackning av jar/war/ear/m.fl. Om du däremot har ett körbart jar-arkiv (med definierad main-klass) så kan du använda 'java jar Filnamn.jar'.

Programmet jar används som följer:

$ jar [options] [paketnamn] [eventuell manifest-fil] [filer-som-ska-packas]

Det fungerade med andra ord?! Bra. Varsego.