Forum » Programiranje » [java] package/import
[java] package/import
killa bee ::
Imam 2 .java datoteki v isti mapi na namizju:
Moj cilj je da bi lahko iz terminala pognal program HelloDate.
Uporabljam linux. Kako bi lahko to naredil? Imam že inštaliran JDK.
Moj cilj je da bi lahko iz terminala pognal program HelloDate.
Uporabljam linux. Kako bi lahko to naredil? Imam že inštaliran JDK.
import net.sssw.test.*; public class HelloDate{ public static void main(String args[]) { System.out.println("from main!"); Second ob1 = new Second(); ob1.f(); } }
package net.sssw.test; public class Second{ void f(){ System.out.println("from second!"); } }
- spremenilo: killa bee ()
Kroos ::
Zakaj sploh hočeš uporabit package za te 2 java datoteki? Package se uporablja takrat, ko imaš veliko datotek, da se izogneš kakšnim 'naming' konfliktom.
Drugače pa, če sta datoteki v istem package-u jih ne rabiš importat med sabo, glavno je le, da imata oba java datoteki na vrhu definiran isti package, torej v tvojem primeru 'net.sssw.test';
Struktura 'net.sssw.test' pomeni tudi, da moraš imeti obe java datoteki v strukturi direktorijev 'net/sssw/test', saj vsak 'člen' v package-u pomeni en direktorij oz. mapo.
Ko imaš vso to strukturo direktorijev postavljeno, lahko iz direktorija v katerem je direktorij 'net/' kličeš java datoteke takole (jaz sem zadevo poganjal na Windowsu, ker nimam Linuxa, ampak je postopek precej isti):
Dobiš izpis:
Drugače pa, če sta datoteki v istem package-u jih ne rabiš importat med sabo, glavno je le, da imata oba java datoteki na vrhu definiran isti package, torej v tvojem primeru 'net.sssw.test';
Struktura 'net.sssw.test' pomeni tudi, da moraš imeti obe java datoteki v strukturi direktorijev 'net/sssw/test', saj vsak 'člen' v package-u pomeni en direktorij oz. mapo.
Ko imaš vso to strukturo direktorijev postavljeno, lahko iz direktorija v katerem je direktorij 'net/' kličeš java datoteke takole (jaz sem zadevo poganjal na Windowsu, ker nimam Linuxa, ampak je postopek precej isti):
E:\>javac net/sssw/test/Second.java E:\>javac net/sssw/test/HelloDate.java E:\>java net/sssw/test/HelloDate
Dobiš izpis:
from main! from second!
killa bee ::
men napiše:
HelloDate.java:1: error: package net.sssw.test does not exist import net.sssw.test.*; ^ HelloDate.java:9: error: cannot access Second Second ob1 = new Second(); ^ bad class file: ./Second.class class file contains wrong class: net.sssw.test.Second Please remove or make sure it appears in the correct subdirectory of the classpath. 2 errors
Zgodovina sprememb…
- spremenilo: killa bee ()
killa bee ::
Zakaj sploh hočeš uporabit package za te 2 java datoteki? Package se uporablja takrat, ko imaš veliko datotek, da se izogneš kakšnim 'naming' konfliktom.Za probat, da vidim če res deluje.
Kroos ::
V datoteki HelloDate.java ni potrebno narest 'import net.sssw.test.*;', ampak 'package net.sssw.test;', saj sta datoteki med seboj vidni, če sta v istem package-u.
Poleg tega moraš tudi imeti strukturo direktorijev tako:
Datoteke pa kličeš (s pomočjo ukazov, ki sem jih napisal zgoraj) iz direktorija v katerem je direktorij net/, torej v tvojem primeru iz namizja oz. iz mape v namizju, če imaš ta direktorij.
Poleg tega moraš tudi imeti strukturo direktorijev tako:
net |__ sssw |___ test |___ HelloDate.java |___ Second.java
Datoteke pa kličeš (s pomočjo ukazov, ki sem jih napisal zgoraj) iz direktorija v katerem je direktorij net/, torej v tvojem primeru iz namizja oz. iz mape v namizju, če imaš ta direktorij.
killa bee ::
če jih dam v ist folder potem ne potrebujem niti 'package net.sssw.test;' niti "import net.sssw.test.*;"
V kakšnem primeru bi pa potem sploh rabil 'package net.sssw.test;' in "import net.sssw.test.*;" ?
V kakšnem primeru bi pa potem sploh rabil 'package net.sssw.test;' in "import net.sssw.test.*;" ?
killa bee ::
Kaj pa če dam file HelloDate.java v folder sssw, second.java pa pustim kjer je. V tem primeru mi ko hočem compilat HelloDate.java vrže to napako:
error: package net.sssw.test does not exist import net.sssw.test.*; ^ HelloDate.java:9: error: cannot find symbol Second ob1 = new Second(); ^ symbol: class Second location: class HelloDate HelloDate.java:9: error: cannot find symbol Second ob1 = new Second(); ^ symbol: class Second location: class HelloDate 3 errors
Zgodovina sprememb…
- spremenilo: killa bee ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | android črtaOddelek: Programiranje | 2399 (1670) | g333kk |
» | Ne zazna R.class -androidOddelek: Programiranje | 1295 (1133) | Marat |
» | [Java] Zasnova shoot em up igreOddelek: Programiranje | 1195 (874) | PecenkA |
» | [Android SDK]+[NetBeans][verzija 7.1.1]Project Compile ErrorOddelek: Programiranje | 1269 (1177) | KernelPanic |
» | Java problemOddelek: Programiranje | 1615 (1313) | infiniteLoop |