IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar

Člen
Avatar
:6.2.2015 0:15

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
Tvůrce
Avatar
Odpovídá na
Silvinios:6.2.2015 7:34

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

Člen
Avatar
Odpovídá na Silvinios
:6.2.2015 20:27

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
Tvůrce
Avatar
Odpovídá na
Atrament:6.2.2015 20:57

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
Tvůrce
Avatar
Odpovídá na
Atrament:6.2.2015 21:00

'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

Člen
Avatar
Odpovídá na Atrament
:6.2.2015 22:02

Díky. To mi pomohlo.

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

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
Všechno co se děje, je výsledkem našich myšlenek.
Avatar
Atrament
Tvůrce
Avatar
Odpovídá na Jarda Pácha
Atrament:22.12.2016 1:08

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
22.12.2016 1:08
Avatar
Jarda Pácha
Člen
Avatar
Odpovídá na Atrament
Jarda Pácha:22.12.2016 1:14

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
Všechno co se děje, je výsledkem našich myšlenek.
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.