[Java] package importeren

Pagina: 1
Acties:
  • 144 views sinds 30-01-2008
  • Reageer

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
Ik ben net begonnen met informatica aan de RuG. We zijn begonnen met een cursus java. Om de input wat makkelijker te maken hebben ze een mooi extractor package gemaakt. De broncode op de uni compileerde prima maar hier doet ie t niet omdat ie (natuurlijk) die pakketjes niet kan vinden.

In welke map moet ik die packages stoppen zodat de javac compiler begrijpt waar local.* zit?
Ik heb ze ff ingepakt want ik kan ook geen local.* bestanden vinden:
http://members.webdeveloping.nl/~niels/fok/local.zip

Wie weet raad met Java? :Y)

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

De locatie van die package moet je in je classpath zetten. Als ze in een jar zitten moet je het complete pad incl. de jar in je classpath zetten. Als de bestanden niet in een jar zitten moet je de directory waar local in zit in je classpath toevoegen.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
Wat voor extensies hebben die packages normaal (behalve jar)?
Waar zit die classpath dan? Ik kan wel een classlist vinden onder jdk<versie>\jre\lib. Is dat m soms?

In dat zipje zit geen local.* en het zijn allemaal .java bestanden, klopt dat wel?

  • b19a
  • Registratie: September 2002
  • Niet online
nielsgeode schreef op woensdag 14 september 2005 @ 14:45:
Ik ben net begonnen met informatica aan de RuG. We zijn begonnen met een cursus java.
offtopic:
met docent Harm Bakker?

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
BoukeHaarsma schreef op woensdag 14 september 2005 @ 14:58:
[...]

offtopic:
met docent Harm Bakker?
Ja :P

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

nielsgeode schreef op woensdag 14 september 2005 @ 14:57:
Wat voor extensies hebben die packages normaal (behalve jar)?
Waar zit die classpath dan? Ik kan wel een classlist vinden onder jdk<versie>\jre\lib. Is dat m soms?

In dat zipje zit geen local.* en het zijn allemaal .java bestanden, klopt dat wel?
Het classpath is een systeem-variabele, het kan zijn dat je die nog aan moet maken.
Je moet de klassen in local.zip uitpakken in een directory local. Deze bestanden moet je dan compilen en de directory waar je de dir local in heb gezet moet je aan het classpath toevoegen.
Op de site van Sun is hier trouwens uitgebreide documentatie over te vinden

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • b19a
  • Registratie: September 2002
  • Niet online
Kleine wereld ;).


Als je er niet helemaal uit kunt komen, dan kun je ook het volgende doen. Wij hadden voor ditzelfde vak alleen de classe Extractor nodig. Kopieer dit bestand naar je werkmap, en open deze. Haal vervolgens de volgende lijn weg:
Java:
1
package local.Extractor;
en sla het bestand op.

Als ik me niet vergis dan moet je nu met de Extractor kunnen werken, let wel dat je op deze manier geen import local.*; moet doen, omdat deze niet bestaat ;).

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
Waar maak je die aan dan? Bij Environment Variables ==> System variables en dan een nieuw variabele met als waar [dir]\local?

Verwijderd

unzip je bestand naar bijvoorbeeld c:\temp\local
open command prompt
c:
cd \temp
javac .\local\*.java

Wanneer je vanuit c:\temp\local probeert te compileren, vind javac de package niet en gaat het dus mis.

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
Dat compileren is gelukt (stiekem zaten er ook class bestanden tussen :P)
Maar hoe zit het nu met die classpath?

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

nielsgeode schreef op woensdag 14 september 2005 @ 15:06:
Waar maak je die aan dan? Bij Environment Variables ==> System variables en dan een nieuw variabele met als waar [dir]\local?
Nee, de waarde moet zijn [dir], het is verder ook handig om het huidige pad toe te voegen, de waarde wordt dan dus "[dir];."

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Verwijderd

Zo te zien moet je die zip file uitpakken in een directory die local moet heten. Bijvoorbeeld in C:\Java\local

Je moet dan zorgen dat C:\Java in de CLASSPATH environment variabele voorkomt.
Zie Control Panel > System > Advanced > Environment Variables.

Daar kun je de CLASSPATH variabele toevoegen of wijzigen, dit kun je per gebruiker of voor het hele systeem doen.
Als je gebruik maakt van een IDE, kun je daarin meestal ook een CLASSPATH opgeven.

Zodra dit gebeurt is, kun je zonder problemen in je eigen Java projecten gebruik maken van die packages en classes.

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
Hij doet het :D :D

Heb nu echt weer zo'n "Hello World" gevoel O+

Verwijderd

BoukeHaarsma schreef op woensdag 14 september 2005 @ 15:05:
Haal vervolgens de volgende lijn weg:
Java:
1
package local.Extractor;
en sla het bestand op.
Nee, als je gebruik maakt van dergelijke packages zou je de bestanden ervan nooit aan moeten hoeven passen. Sterker nog, het kan niet eens als je alleen de .class bestanden aangeleverd krijgt.

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
Het compileren met javac gaat zonder probleem
type je daarna java blaab dan zegt ie: Exception in thread "main" java.lang.NoClassDefFoundError

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Zit je in dezelfde directory als blaab.class? Weet je dat java case-sensitive is?

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
Ik heb mn java installatiedirectory enzo gewoon als path gezet en die local zooi als classpath

ik doe dan:
cd d:\java (waarin blaab.java staat)
javac blaab.java
java blaab
dit geeft die foutmelding:
Exception in thread "main" java.lang.NoClassDefFoundError: blaab

[ Voor 4% gewijzigd door nielsgeode op 14-09-2005 15:58 ]


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

je moet ook java blaab doen, dus zonder .java erachter

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Verwijderd

nielsgeode schreef op woensdag 14 september 2005 @ 15:54:
Ik heb mn java installatiedirectory enzo gewoon als path gezet en die local zooi als classpath

ik doe dan:
cd d:\java (waarin blaab.java staat)
javac blaab.java
java blaab.java
dit geeft die foutmelding:
Exception in thread "main" java.lang.NoClassDefFoundError: blaab
Heet je class blaab of Blaab?
Sowieso moet je java blaab of java Blaab doen, afhankelijk van de naam van de class.

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
Ik heb alles met kleine letters (dus class blaab en blaab.java en blaab.class)
en ik deed java blaab
dat .java deed ik fout op tweakers (:P)

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Doe eens:
java -cp . blaab
of neem . op in je CLASSPATH variabele

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Heb je ook de . in je classpath gezet?
Probeer het anders eens met java -cp . blaab

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 29-04 08:14

Janoz

Moderator Devschuur®

!litemod

Het is trouwens gebruikelijk (en ook sterk aan te raden) om je classname met een hoofdletter te laten beginnen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
ik heb er geen punt in? moet er .[dir] staan?

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
NetForce1 schreef op woensdag 14 september 2005 @ 16:01:
Heb je ook de . in je classpath gezet?
Probeer het anders eens met java -cp . blaab
Dan doet ie het wel :)

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
nielsgeode schreef op woensdag 14 september 2005 @ 16:02:
ik heb er geen punt in? moet er .[dir] staan?
Als je CLASSPATH heb ingesteld, dan is het aan te raden om ook . er in te zetten.
Dus bijvoorbeeld
CLASSPATH=E:\Development;.;D:\Interbase\Interclient\Interclient.jar

;.; lijkt trouwens een smiley met hangwangen :)

Verwijderd

Dan moet je eerst maar leren om namen van classes altijd met een hoofdletter te beginnen. Dus je class moet "gewoon" Blaab heten, en je bestand Blaab.java

Als je die zip file hebt uitgepakt in C:\Java\local, moet C:\Java dus in je CLASSPATH staan. als je zelf een class wilt maken die gebruik maakt van de local package, kun je deze wellicht het best in C:\Java zetten. Of in een andere directory die in je CLASSPATH staat.

Maar probeer eerst even een simpele Hello World te maken (bestand Hello.java in C:\Java). Geen packages, geen imports, gewoon alleen:
Java:
1
2
3
4
5
public class Hello {
   public static void main(String[] args) {
      System.out.println("Hello, World!");
   }
}

Vervolgens druk je op Windows+R, tik je in cmd, en vervolgens:
cd \Java
javac Hello.java
java Hello

Ok, ik was wat langzaam, maar zorg gewoon dat je eigen java bestanden ook in de classpath staan, dat scheelt een hoop gedoe.

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 21:01

Salandur

Software Engineer

BoukeHaarsma schreef op woensdag 14 september 2005 @ 14:58:
[...]

offtopic:
met docent Harm Bakker?
offtopic:
Heb ik geloof ik ook ooit les van gehad.. jaja, 1 jaar aan de RuG informatica gesturdeerd

Assumptions are the mother of all fuck ups | iRacing Profiel


  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
Hello.java:2: cannot find symbol
symbol : class string
location: class Hello
public static void main(string[] args) {
^
1 error


Mijn blaab.java compileert ie gewoon |:(

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 29-04 08:14

Janoz

Moderator Devschuur®

!litemod

Je zult wel een vreemd teken meegekopieerd hebben oid. Probeer eens alles tussen het { en public weg te halen en vervolgens je eigen enter neer te zetten.

offtopic:
En ja, ik heb ooit ook nog eens les van Harm Bakker gehad.


@ Cheatah: Verek, ik raakte in de war doordat het ^ aan het begin van de regel werdt gezet |:(

[ Voor 19% gewijzigd door Janoz op 14-09-2005 16:43 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Ok, ok, ik had zelf string ipv. String ingetikt :P
Stomme C# ook ;)

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
Compileren doet ie nu wel maar bij het uitvoeren zegt ie:

D:\java>java Hello
Exception in thread "main" java.lang.NoClassDefFoundError: Hello

D:\java>java -cp . Hello
Hello, World!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 29-04 08:14

Janoz

Moderator Devschuur®

!litemod

Dan heb je in je classpath de lokale directory dus niet staan (of uberhaupt geen classpath gedefinieerd).

Wat gebeurt er als je echo %CLASSPATH% intikt?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
dan krijg ik dit: (ook wel vreemd)

D:\java>echo %CLASSPATH%
c:\Program Files\Java\jdk1.5.0_04\jre\lib\ext

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 22-04 03:55

Nick_S

++?????++ Out of Cheese Error

Als je je classpath environment variable in Windows aanpast, moet je volgens mij nog je commandline even opnieuw opstarten.

Of in je commandline gaan werken met set classpath=.;c:\java\local maar dat geld dan alleen in je huidige commandline sessie.

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


  • arnout2
  • Registratie: September 2005
  • Laatst online: 30-04 15:05
laat maar :P

[ Voor 149% gewijzigd door arnout2 op 14-09-2005 17:51 ]


  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 27-04 21:10
Heb mn command ff opnieuw gestart
Hij lijkt het nu te doen :P
Pagina: 1