Do nového roku jako lepší programátoři? Znovu otevíráme večerní školu programování. Nette framework, návrhové vzory, testování nebo vůbec poprvé kurzy ASP.NET dostupné odkudkoli v republice.
Avatar
dostalmart
Člen
Avatar
dostalmart:

Dobrý den,
učím se programovat v Javě a začal jsem v Eclipse. Kvůli tutoriálům na itnetwork.cz jsem však přešel na NetBeans, protože tutoriály jsou v NetBeans. Zajímalo by mě, jestli je možné aplikace vytvořené v Eclipse spouštět i v NetBeans a jak to provést.

Pak tu mám problém s přiloženým kódem: V Netbeans musím sc.close() smazat, aby mi to nehlásilo chybu, v Eclipse to tam ale musí být, aby to nehlásilo chybu. Nerozumím tomu, proč je to v každém IDE jinak.

Předem děkuji za rady.

public static void main(String[] args) {
    // TODO code application logic here
    Scanner sc = new Scanner(System.in, "UTF-8");
    String s = sc.nextLine();
    System.out.println(s);
    sc.close();
 
Odpovědět 6.2.2015 0:15
Avatar
Silvinios
Redaktor
Avatar
Odpovídá na dostalmart
Silvinios:

Jedním z možných řešení je použít Apache Maven. Eclipse i Netbeans obsahují pluginy, které Maven podporují.

Jakou chybu to hlásí?

 
Nahoru Odpovědět 6.2.2015 7:34
Avatar
dostalmart
Člen
Avatar
Odpovídá na Silvinios
dostalmart:

Ještě k mojí první otázce: Dají se projekty z Eclipse nějak převést do NetBeans, aby se daly editovat zdrojové kódy? Nebo s tím, co jsem vytvořil v Eclipse, musím pracovat jen v Eclipse?

Co se týče těch chyb:
Když v Eclipse sc.close() není, tak to hlásí: Resource leak: 'sc' is never closed. A když v NetBeans sc.close() je, tak to hlásí: Convert to try-with-resources.

 
Nahoru Odpovědět 6.2.2015 20:27
Avatar
Atrament
Člen
Avatar
Odpovídá na dostalmart
Atrament:

V Netbeans je možnost importu Eclipse projectu, najdeš to ve File | Import Project

Editováno 6.2.2015 20:58
 
Nahoru Odpovědět 6.2.2015 20:57
Avatar
Atrament
Člen
Avatar
Odpovídá na dostalmart
Atrament:

'Convert to try-with-resources' není hlášení o chybě ale návrh Netbeans použít danou konstrukci. Try-with-resources automaticky zavírá otevřené resources, takže close() pak není potřeba.

 
Nahoru Odpovědět 6.2.2015 21:00
Avatar
dostalmart
Člen
Avatar
 
Nahoru Odpovědět 6.2.2015 22:02
Avatar
Jarda Pácha
Člen
Avatar
Jarda Pácha:

Položím doplňující otázku, k čemu je tedy ta metoda close()? Moc mi nejde do hlavy, proč v NetBeans to být nemusí a v Eclipse ano. V každém případě bez této metody to funguje stejně nebo se pletu? Díky za odpověď. :))

 
Nahoru Odpovědět 21.12.2016 18:00
Avatar
Atrament
Člen
Avatar
Odpovídá na Jarda Pácha
Atrament:

Metoda close() v tomto kontextu slouží k uzavření nějaké prostředku, v tomto případě Scanneru. Představ si to jako soubor, který po práci prostě zavřeš aby tam 'někde' nezůstal jen tak otevřený. Nevím, kde jsi vzal, že v Netbeans close() být nemusí a v Eclipse jo, to jsi něco špatně pochopil, není rozdíl mezi Javou v Netbeans a v Eclipse, v obou IDE platí v Javě stejná pravidla. Metoda close() by se měla použít vždy když skončíš práci s nějakým prostředkem.

V Javě 7 přibyla do jazyka nová konstrukce tzv. try-with-resources, která se vyznačuje tím, že v bloku try se definuje prostředek (resource) s tím se pak dále pracuje a po skončení práce není potřeba explicitně volat metodu close(), jelikož se o to postará právě ta konstrukce try-with-resources. Takže ten příklad z prvního příspěvku by vypadal takto:

try (Scanner sc = new Scanner(System.in, "UTF-8")) {
  String s = sc.nextLine();
  System.out.println(s);
  //tady není sc.close(), protože jsme použili try-with-resources konstrukci a tudíž není potřeba
}
 
Nahoru Odpovědět  +1 22.12.2016 1:08
Avatar
Jarda Pácha
Člen
Avatar
Odpovídá na Atrament
Jarda Pácha:

Já jsem jen špatně položil dotaz. :-D Ten problém byl, že Eclipse upozorní na tuto metodu a NetBeans ne. Každopádně díky za odpověď. :)

 
Nahoru Odpovědět 22.12.2016 1:14
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.