zdravím, prosim vas.
zacinam s javou a sve zkusebni programky ukladam do jine slozky nez defaultni.
na programovani pouzivam NetBeans IDE 6.1.
Potrebuju poradit jak dostat do programu ty zakladni baliky (util, string, .....).
(a) Dela se to nejak v nastaveni NetBeansu, nebo si ty baliky mam zkopirovat primo do nejakeho podadresare slozky, v niz mam svuj program?
(b) Cetl jsem taky neco o importovani baliku. napr "import java.io.*"
muzete mi to prosim trochu objasnit? treba oba zpusoby a - b (jestli ovsem jdou).
pripadne me vyvest z omylu??
dopredu diky
Fórum › Java
Balíky
ty standardni importy sou vetsinou ve svym adresari a cestu k nim si udrzuje kompilator... ikdyz v ostatnich jazycich jde vetsinou pridat i nejaky adresar pomoci direktivi prekladace...
a precetl sis k cemu ten balik slouzi?
jo, precetl jsem si kcemu jsou baliky... a za dalsi, programuju taky i trochu v C, takze vim o cem je rec. jen mi to dela problem pridat.
a jak rikas, jinde to jde i pomoci direktivy prekladace...
ale tady jsem ztraceny... ty baliky proste nemuze kompilator najit a hlasi mi to chybu. tak nevim co s tim....
Ahoj,
co jsou balíčky tedy víš. Co se týče samotného importu:
-do aplikace je automaticky importován balíček java.lang. Tzn. třídy z toho balíčku můžu používat bez explicitního uvedení balíčku, ve kterém se nacházi.
Tzn. ve svém kódu můžu mít:
{
System.out.println("Tento zápis je akvivalentní zápisu java.lang.System.out.pr...");
System.exit(0);
}
-pokud chci do aplikace importovat obsah celého balíčku, použiji zápis:
import java.io.*;
Od této chvíle můžu používat třídy z toho balíčku stejně jako v předešlém případě balíček java.lang. Tzn.:
{
String filePath=".....";
new File(filePath);
}
-pokud chci improtovat jen konkrétní třídu z balíčku, použiji zápis import java.lang.File;
Od této chvíle můžu používat třídu FIle jako v případě výše, ovšem toto je špatně:
{
File file=new File("...");
new FileReader(file);
}
Musel bych použít explicitní zápis balíčku (nebo správněji řečeno-plný název třídy):
{
File file=new File("...");
new java.io.FileReader(file);
}
-žádná balík string neexistuje. Existuje jen třída String, která je součástí balíčku java.lang. Tzn. nemusíš uvádět její import, ani její plný název. Ve skutečnosti je to ovšem java.lang.String.
-existuje ještě statický import (slouží k importu statických členů), ovšem tím bych se teď vůbec nezatěžoval. Jeho používání se stejně příliš nedoporučuje, jelikož znepřehledňuje kód. Když už jsme u toho, tak ani zápis importu celého balíčku (např. import java.io.*;) se příliš nedoporučuje, protože pak není vidět, co se ve třídě opravdu používá. Lepší je hezky naimportovat všechny třídy, co se opravdu používají. Slušné IDE to stejně udělá za tebe;-)
-všechny výše zmiňované balíčky jsou součástí Java SE, tzn. nemusí se překladači nijak "speciálně sdělovat" jejich existence a můžeš je využívat zkrátka vždy.
-pokud potřebuješ využít jinou knihovnu, tak ji musíš sdělit překladači (v NB se to dá hezky nastavit v nastavení projektu). Pak už můžeš opět využívat její balíčky jak je výše uvedeno.
Napadla mě snad jen jedna situace, kdy by jsi mohl mít s importy problém:
Představ si, že v aplikaci používáš knihovnou, která obsahuje balíček: cz.neco.io a součástí toho balíčku je třída Reader.
Ve své třídě používáš jak třídu java.io.Reader, tak cz.neco.io.Reader. V tomhle případě by mohl nastat následující problém:
import java.io.Reader;
import cz.neco.Reader;
{
...
Reader reader=new Reader(...);
...
}
A jakou třídu má teď JVM využít, že?
Naštěstí řešení je jednoduché. Buď budu uvádět v případě obou tříd Reader jejich celá jména (java.io.Reader a cz.neco.Reader), nebo provedu import jen jedné z nich (import java.io.Reader;) a v případě druhé třídy budu uvádět její celé jméno (cz.neco.Reader).
Doufám, že jsem alespoň trochu pomohl, a že jsem vůbec odpovídal patřičně k otázce;-)
BTW: Omlouvám se za případné překlepy, nemám teď moc času, tak se mi nechce číst po sobě příspěvek ještě jednou:-[
tu nejde ani o zdrojaky, ale o to, jak tam vlozit dane baliky.... na to zadne zdrojaky nemam.... mam tu treba na zkousku jeden programek, takovy lehky z knihy, ale oni ty baliky moc neresi....
import java.util.*; //tohle mi nejde
import java.string.*; //tohle mi nejde
class retezce {
public static void main(String[] args) {
// prvni vec na kterou potrebuju balik "util"
Map map = new HashMap();
Double refDouble = new Double(1.23);
Double refDouble1 = new Double(54);
map.put("key", refDouble);
map.put("key1", refDouble1);
refDouble = (Double)map.get("key1");
double d2 = refDouble.doubleValue();
System.out.println("D2: " + d2);
// dalsi vec na kterou potrebuju balik "string" (aspon podle erroru)
Set mnozina = new HashSet();
mnozina.add("iva");
mnozina.add("jarda");
mnozina.add("tomas");
mnozina.add("pavel");
mnozina.add("honza");
mnozina.add("kuba");
mnozina.add("kvetoslava");
Iterator it1 = mnozina.iterator();
while(it1.hasNext()) {
String element1 = (String) it1.hasNext();
System.out.println("Element: " + element1);
}
}
}
intalacni soubory od NetBeans a javy mam na C.
tento program mam ulozen ve slozce: D:\java\retezce
zde jsou dalsi 4 podslozky: biuld, src, nbproject, test
nevim co vic dodat.....
kam mam pridat ty baliky? nebo jak je teda pripojit?
Koukám na ten tvůj zdroják....
import balíčku java.util by ti měl jít. Ovšem že ti nefunguje druhý import, není nic zvláštního, jelikož žádný taková balíček neexistuje! Však se podívej do API Java SE http://java.sun.com/javase/6/docs/api/ ;-)
Leda že by v té knížce používali nějaké své knihovny a ty jsi je neměl v přiřazené k projekty...pokud ovšem knížka zavádí nějaký svůj balíček java.string, tak tu knížku okamžitě hoď z okna...Je to dobrá rada:-)
To Kuba-$ : Netbeansy ti samy doplní všechny importy, stačí když někde použiješ třídu co je v nějakém balíčku a hned ti to nabídne (žlutě podtrženo a vlevo žárovka) doplnění importu .. případně ctrl + shift + i ... jinak pokud to ten balíček nenajde, tak ti pravděpodobně chybí knihovny, které přidáš buď přímo z .jar souboru do libraries u projektu a pak už ty importy netbeansy vyřeší ...
To Kuba-$ :
No nemáš vůbec zač. Snad ti ten můj chaotickej výklad alespoň trochu pomůže;-)
Každopádně mám takovej pocit, jestli problém nebude opravdu někde jinde. Například používání nějaké knihovny. Jelikož ten import balíčku java.util by ti opravdu měl fungovat. Pokud tedy máš opravdu příkaz importu na prvním místě ve zdrojáku (resp. za příkazem zařazení balíčku).
Každopádně držím palce no, ale té rady ohledně knížky, pokud opravdu zavádí nějaký svůj balíček java.string se opravdu drž;-)
darthdeus napsal:
To Kuba-$ : Netbeansy ti samy doplní všechny importy, stačí když někde použiješ třídu co je v nějakém balíčku a hned ti to nabídne (žlutě podtrženo a vlevo žárovka) doplnění importu .. případně ctrl + shift + i ... jinak pokud to ten balíček nenajde, tak ti pravděpodobně chybí knihovny, které přidáš buď přímo z .jar souboru do libraries u projektu a pak už ty importy netbeansy vyřeší ...
To je pravda...ale pokud člověk ještě pořádně neumí "manuálně" pracovat s balíčky/importy, tak se přece nemůže spoléhat na IDE...to jen obchází problém, ale jednou na něj stejně narazí a bude to mnohem horší.
Ale je fakt, že práce s NB je pohodová:-)
To Mihulik : IDE člověka občas naučí věci na které by sám nepřišel .. a hlavně se to člověk naučí mnohem rychleji a nemusí řešit blbosti typu chybějící středník/import atd...
darthdeus napsal:
To Mihulik : IDE člověka občas naučí věci na které by sám nepřišel .. a hlavně se to člověk naučí mnohem rychleji a nemusí řešit blbosti typu chybějící středník/import atd...
To nepochybně, ale proč to tak je by měl člověk vědět. A to ho IDE nenaučí...
Ale tak necháme týhle debaty, stejně je to off-topic:-)
sem to tak cvicne zkousel zkompilovat...
import java.string muzes vyhodit presne jak tu nekdo zminoval ...
problem je String element1 = (String) it1.hasNext();
prirazujes boolean do stringu a to nejsou kompatibilni typy ... a nepomuze ti ani explicitni pretypovani...
jeste hledam metodu co tam asi chces pouzit...
tak todle mi funguje akora to hlasi warningy:
Note: retezce.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
import java.util.*; //tohle mi nejde
class retezce {
public static void main(String[] args) {
// prvni vec na kterou potrebuju balik "util"
Map map = new HashMap();
Double refDouble = new Double(1.23);
Double refDouble1 = new Double(54);
map.put("key", refDouble);
map.put("key1", refDouble1);
refDouble = (Double)map.get("key1");
double d2 = refDouble.doubleValue();
System.out.println("D2: " + d2);
// dalsi vec na kterou potrebuju balik "string" (aspon podle erroru)
Set mnozina = new HashSet();
mnozina.add("iva");
mnozina.add("jarda");
mnozina.add("tomas");
mnozina.add("pavel");
mnozina.add("honza");
mnozina.add("kuba");
mnozina.add("kvetoslava");
Iterator it1 = mnozina.iterator();
while(it1.hasNext()) {
String element1 = (String) it1.next();
System.out.println("Element: " + element1);
}
}
}
1. Přiřazení hodnoty boolean do proměné typu String je samozřejmě blbost. Předpokládám ale, že se Kuba-$ jen upsal a ve skutečnosti chtěl volat metodu next().
2.Warning ti to háže, jelikož nejsou použity typově bezpečné kolekce, neboli generické kolekce. Viz. generiky http://java.sun.com/docs/books/tutorial/extra/generics/index.html
Kuba-$ napsal:
jeste sem nemel cas to zkusit, (byl jsem v praci), ale odzkousim ;-)
a jestli nekdo chcete vedet, tak se Javu ucim z knihy JAVA Hotová řešení Lubomír Brůha
Knihu Java Hotová řešení sice neznám, ale již z názvu a popisu je vidět, že se nejedná o učebnici základů jazyka. Pokud tedy s Javou začínáš, tak asi nebude moc vhodná. Ale to už je samozřejmě na tobě...
Každopádně já velmi doporučuji přímo tutorialy od SUNu. Jim se nějaká knížka těžko vyrovná:-)
Kuba-$ napsal:
Kde ty tutorialy najdu??? das sem presny odkaz pls ???
jinak... sice s Javou zacinam, ale mam uz zaklady z Delphi a C. takze programovat celkem umim. jen potrebuju doladit ty javovske detaily...
sorry, nevšiml jsem si tvé odpovědi...sice pozdě, ale třeba ti to k něčemu ještě bude...
http://java.sun.com/developer/onlineTraining/
Jinak C vs Java je neporovnatelné...o Deplhi nemluvím...
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Moderátoři diskuze