Gå til innhold

Borland JBuiler og import fil.


Anbefalte innlegg

Bruker Borland JBuilder 8. Når jeg har kompilert et program er det ikke mulig å kjøre det fra kommandolinje. Får bare exception NoClassDefFoundError. Det funker imidlertid fint å kjøre det inni JBulder.

Er det noen instillinger i JBuilder som gjør at jeg vil kunne kjøre det fra kommandolinje.

 

Hvordan importere jeg en fil i java? Har en fil med metoder jeg ønsker å importere. Hva gjør jeg?

Har prøvd med import "filnavn.java";. Funker ikke.

Lenke til kommentar
Videoannonse
Annonse

Du bruker ikke kildefilen når du importerer, det er det # include statementet i en del andre språk som gjør.

import enPakke.Klasse;  // importerer en klasse i en pakke

import enPakke.*;         // importerer alle klassene i en pakke

En pakke kan være en mappe, jar eller zip fil der klassene er deklarert med package enPakke; på toppen.

 

Klasser som ligger i samme pakke eller mappe som den du kompilerer skal ikke importeres (fra og med jdk1.4 får du feilmeldinger for det). Pakker som importeres må ligge i classpath når du kompilerer. (f.eks med -cp argumentet til 'javac' og 'java' eller ved å montere opp pakkene i ide'et ditt)

Lenke til kommentar

Jeg deklarerer <pakage myproject> øverst i både <myproject.java>, der main ligger. Og i <extClasses.java> der de ekstra klassene ligger, har ingen main.

Så har jeg <import myproject.*> for å få med alle klassene. Får feilmelding på at klassen <extClasses.java> ikke finnes.

 

Noen tips på hva jeg har gjort feil?

Lenke til kommentar

mine 2 cent:

 

husk at hvis du putter filene i en pakke bør de ligge i en mappe med samme navn. dvs en fil med package mypackage; bør ligge i mappen mypackage

 

Enkleste måten å kjøre et program i en slik pakke på (uten å sette classpaths) er å stå i mappa utenfor og skrive java mypackage.MyClass

 

Dersom det er en liten sak, og pakker ikke er vesentlig, holder det med følgende i EnKlasse.java, for å importere EnAnnenKlasse.java:

import EnKlasse;

De må da ligge i samme katalog...

 

CPL

Lenke til kommentar

Her er et lite eksempel. Så er det kanskje lettere å finne feil.

 

package myProject;

import myProject.*;



public class myProject {

   public myProject() {

       int number = retSum();

       System.out.println(number);



   }

   public static void main(String[] args) {

       new myProject();

   }

}

package myProject;



public class extClass {

   public int retSum() {

       return 3+5;

   }



}

 

Disse kodesnuttene ligger i hver sin fil. Filene heter henholdsvis

myProject.java og extClass.java. Begge filene ligger i samme mappe.

 

Jeg får følgende feilmelding

Method retSum() not found in class myProject.myProject at line 6

.

Når jeg skriver <import myProject.> , kommer code completion inn å foreslår <*>, <extClass> og <myProject>. Uansett hvilke av disse jeg velger får jeg samme feilmelding. Har også prøvd å ha samme navn på metode og klasse i extClass, uten at det har hjulpet.

 

Det hele gjøres da fortsatt i JBuilder 8. Noen ideer?

 

Edit: Innlegg 666, the devil himself.....

Lenke til kommentar

package myProject; 

import myProject.*; 

Klasser som er i samme pakke trenger du ikke importere, det ligger implisitt at alle andre klasser er tilgjengelig i pakkedeklarasjonen (dvs. import statementet kan du se helt bortifra). Klasser bruker man normalt å gi navn med STOR forbokstav.

 

retSum metoden din er i extClass, siden den den ikke er deklarert static må du oprette et object av typen extClass for å kunne bruke den, altså:

extObjekt = new extKlasse();

int number = extObject.retSum();

 

Det ser ut som du vil bruke import på samme måte som som man bruker include i en del andre språk, det går altså ikke. Du må henvise til hvilke objekt (klasse for statiske metoder) du ønsker å benytte. Det ser ut som du sliter litt med objektorienteringen, det kan kanskje være lurt å sette seg inn i det før man begynner å legge ting i pakker.

Lenke til kommentar

Der funker det. Takk for hjelpen.

 

Du har rett i at jeg ikke har hatt noe særlig med objektorientering i java å gjøre. Har programmert litt med C++. Det merkes tydeligvis :smile:

 

Kommer foreløpig til å bruke java til sommeren, så jeg regner med å lære mer etterhvert.

 

Igjen, takk for hjelpen....

 

Ørjan.....

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...