- Parci: Milyen mosógépet vegyek?
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- bambano: Bambanő háza tája
- Szevam: „Rendszerleállás” – egy AI képzeletbeli halál utáni élménye
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- Brogyi: CTEK akkumulátor töltő és másolatai
- btz: Internet fejlesztés országosan!
Új hozzászólás Aktív témák
-
Lortech
addikt
Sok interjún vagyok túl mindkét oldalról, de nem sok biztosat lehet erre mondani.
Nem minden cég csináltat gépi feladatot a felvételi folyamat során. Sőt, többségében nem volt ilyen az én interjúimon. Ha volt, akkor az leginkább egyszerű algoritmizálási feladatokat jelentett, és akkor is általában otthoni előszűrés volt, nem az interjú közben nyomtak kezembe egy gépet. Gyakorló feladatokat találsz pl. codewarson, hackerranken, az egyszerűbbeken érdemes edzeni. Ahhoz, hogy sikeresen tudj venni egy ilyen akadályt juniorként, logikus gondolkodás kell, és az, hogy a java a kezedben legyen, ne a feladat közben kelljen gondolkodni szintaktikán és alap JSE dolgokon. Nem nagyon találkoztam olyan feladattal interjú során, ami komolyabb speciális java tudást igényel. A legnagyobb előny nyilván az, ha találkoztál már az adott problémával, vagy hasonlóval, ehhez sokat kell gyakorolni. -
Lortech
addikt
válasz
ToMmY_hun #8331 üzenetére
Jellemzőbb, hogy nem a bytecode-ot nézegeted és az alapján megírod java nyelven, hanem egy java decompilerrel (jd, jad) visszaállítod a forrást, többé kevésbé az eredeti forrás visszaállítható, általában olvasható is lesz, ha nem volt obfuszkálva a kód. Nem mindig lehet tökéletesen visszaállítani az eredeti forrást, de debugolásra már így is alkalmas lehet a kinyert kód, és általában kis munkával újra fordíthatóvá is alakítható.
Számtalanszor debugoltam és patcheltem így különböző zárt framewörkös osztályokat. Bizonyos esetekben nagyon jól tud jönni ez a fajta tudás.
JDGUI egy nagyon hasznos tool, van eclipse pluginje is. Nálam első dolgok egyike új eclipse példány beállításánál hogy class without source-hoz asszociálom a jd-eclipse-et. -
Lortech
addikt
válasz
-Faceless- #8254 üzenetére
57. sorban keletkezik NPE.
palya.palya[seged2] null, null objektum a getJatekosSzam() metódus hívás NPE-t eredményez.
IoMuveletek osztály 6. sorában példányosítod a palya meződet:
public Palya palya = new Palya();Ez önmagában nem inicializálja a palya.palya elemeit Mezőkre. Ezt a palyaEpito metódusban csinálnád, viszont ezt ezen a példányon nem hívod meg.
Azt látom, hogy a Main osztályodban meghívod palyaEpito metódust, de azt egy másik példányon teszed, a 20. sorban:
pj.palyaEpito();Viszont ezt a pj objektumot nem adod át az IoMuveletek osztálynak, hanem IoMuveletek-ben létrehozol egy teljesen új Palya példányt.
-
Lortech
addikt
válasz
-Faceless- #8251 üzenetére
Ha minden lényeges infó vagy a teljes kód megvolna a kérdésedben, tapasztalt szem fél perc alatt kiszúrná a problémát. Helyette van sok felesleges infó, amit azért nem biztos, hogy sokaknak van ideje kibogozni.
NPE ad neked sorszámot, az alapján elég egyértelmű szokott lenni szemmel veréssel is a probléma, ha mégsem, akkor bele kell állni debuggal, ha kell, visszanézni a stacken a frame-eket, a változóid állapotát. -
Lortech
addikt
Ezt olyan embernek kellene csinálnia szerintem, aki azért tudja, hogy mit csinál, projekt alapozást eléggé be lehet nézni, és megnehezíteni az egész csapat számára a későbbi munkát. Az ehhez szükséges tudást egész biztosan nem egy fórum hozzászólás alapján fogod megszerezni.
Létrehozhatsz két különálló maven (gradle) projektet.
A-ból elkészül az artifact (pl. jar), azt instalállod a lokális és/vagy távoli repositoryba (Nexus (+nuget akár), vagy Artifactory).
B maven projektből meghivatkozod az A-t mint függőséget.
Az elkészült maven/gradle projektet behúzod a szimpatikus IDE-be, mint maven/gradle projekt.
Vagy használhatsz multi module-t: létrehozol egy parent projektet, A és B modult, és B modulban definiálod A-ra a függőséget.
Gyors kereséssel itt egy példa utóbbira: [link]
Itt A a weather, B a webapp module. -
Lortech
addikt
Már csak azért is érdemes különbséget tenni a sima "láncban hívás" meg builder API-k között, mert előbbi potenciálisan LoD sértés, utóbbi meg többnyire nem.
-
Lortech
addikt
válasz
Aethelstone #7943 üzenetére
Nem egészen. A Hibernate valóban JPA implementáció is, de a JPA még fasorban sem volt, már akkor Hibernate-eztem. Használhatod JPA-val is, meg a natív API-ján keresztül is.
Az eredeti kérdésre a válaszom az, hogy nem muszáj JPA, de hacsak nincs valami különös oka (valamilyen JPA korlát) az esetedben, ami miatt hanyagolnád a JPA-t, én maradnék a JPA-nál. -
Lortech
addikt
Jó, akkor anonymous vagy local class se lehet? Pl. nem implementálhatsz egy Comparatort inline. Miért? Hogyan?
Persze, a nested class is class, ha de ha pl. egy beadandó automatikus kiértékelő rendszer valamilyen mesterséges korláta az, hogy "1 db osztályt" használhatsz, akkor lehet opció.
Egyébként nyilván ökörség bármi ilyen megkötés. -
Lortech
addikt
válasz
szcsaba1994 #7845 üzenetére
Ez nekem úgy hangzik, hogy nincs kimondva hogy nem használhatsz nested classokat, pl. egy inner classt itt. A node osztály tipikusan illik erre a patternre.
-
Lortech
addikt
válasz
Atlantisz48 #7808 üzenetére
[link]
A válaszokból többet tanulhatsz, mintha beszúrnék egyet. -
Lortech
addikt
válasz
M_AND_Ms #7644 üzenetére
Nyilván nem keverendő össze, ha ugyanaz lenne a kettő, akkor nem lenne két alapvetően különböző megoldás a nyelvben (interface vs class, implements vs extends).
Az "öröklődés téma része", de nem állítottam, hogy implementációt örökölsz az interfésszel. Lásd pl. [Multiple Inheritance of State, Implementation, and Type] vége. Ez tovább bonyolódik a java 8 default interfész implementációkkal. Állapototot ezzel legyütt sem lehet örökölni. -
Lortech
addikt
Az, hogy "nincs".
Arra kell válaszolni, amit kérdeztek. Ha ezt így indoklás nélkül nem fogadják el, akkor hülyék. A túlokoskodás pedig nem biztos, hogy előnyös.
Egyébként vélhetőleg azért nem lett java-ban, mert egyszerű OOP nyelvet akartak. Az interface-ek adnak valamelyest megoldást a problémára.
Az ilyen típusú tesztektől egyébként falnak megyek, főleg mikor senior/lead dev pozícióra is ilyenekkel pre-screenelnek. -
Lortech
addikt
válasz
Aethelstone #7564 üzenetére
Ha windows service-re gondolsz, akkor ugye a java alkalmazásodhoz kell egy natív exe wrapper, ami scm-hez illeszkedik, erre vannak kész megoldások, vagy te is készíthetsz ilyen wrappert, ami vagy sima processz indítással vagy akár parancssoron keresztül indítja a java alkalmazást. A kész megoldások, amikkel én dolgoztam, lehetőséget adnak java path beállításra, hogy egy előre definiált helyen lévő jvm-mel indíthasd az alkalmazást. De írtam már olyan wrappert is, ami csak egy batchet indít (ami indítja a javát), ilyenkor természetesen annak a felhasználónak a környezeti változóival (including PATH) fog futni, aki a service indításhoz be van állítva. Ergo az amit írsz, bizonyos esetben igaz lehet - pl. ha a service-t futtató felhasználónak nincs a PATH környezeti változójában java elérési út (a \system-en kívül), vagy a natív wrapper a \system-ben lévő java.exe-hez ragaszkodik -, de nem szükségszerűen van így.
-
Lortech
addikt
válasz
DeathAdder #7544 üzenetére
Ez itt off topik, de egy tipp: vezérlőpulton belül java, ott security fül, és az exception site listnél vedd fel a locationt, amit ír.
-
Lortech
addikt
-
Lortech
addikt
Szerintem arra gondolhat, hogy ha float f = 0.1; -t ír, akkor erre hibát jelez a fordító, mivel a 0.1 literál alapból egy double, de ha 0.1f -et ír, akkor már float.
szerk: ja.
Szóval zolka95, ha
float valami = 3.15;
helyett
float valami = 3.15f; -et írsz, akkor már nem panaszkodik a fordító. -
Lortech
addikt
válasz
Oppenheimer #7110 üzenetére
Datasource definícióval nem jó valamiű, de mindenre van egy SO link: [link]
-
Lortech
addikt
válasz
Oppenheimer #7102 üzenetére
Szerintem az van, amit a hibaüzenet is mond, hogy ha JTA -t akarsz használni, akkor a persistence-unit-on belül kell egy <jta-data-source>$datasource</jta-data-source>
Ha meg nem JTA, akkor a transaction-type-ot át kell állítani RESOURCE_LOCAL-ra. -
Lortech
addikt
válasz
M_AND_Ms #7054 üzenetére
Belepörgettem én is kíváncsiságból, mivel már sokszor előkerült itt is, de csak az első részbe.
Szerintem ez a "leegyszerűsített" magyar nyelvezet nem igazán segíti elő a későbbi továbbfejlődést. A magyar volta miatt is vannak benne olyan se füle, se farka meghatározások, kifejezések, amik szerintem csak félreviszik a dolgot a későbbiekben. Ha valaki komolyan java-t, programozást akar tanulni, megkerülhetetlen az angol nyelvű szakszöveg megértésének képessége, ezt el kell fogadni, és ne is legyen cél a megkerülése, mert később csak hátránya származik belőle.
Azt se mondanám rá, hogy biztos alapokat ezzel a könyvvel kell lerakni. Sok mindent próbál érinteni programozás témakörben, és még azon is túl, de éppen ezért sok mindent felületesen tárgyal csak, sem a JAVA rész nem erős benne, sem a bevezető részek. Nem helyettesít egy rendes bevinfót, egy rendes programozás alapozót, OOP alapozót.
Tele van olyan rövid, felsorolásszerű meghatározással, amik közül némelyik önmagában is meg tudna tölteni fejezeteket, és csak azért szerepel egy néhány soros meghatározás róla, hogy majd be lehessen vasalni.
Ez egy tankönyv, ez a legpozitívabb, amit el tudok mondani róla. -
Lortech
addikt
Nincs általános válasz, normálisan nem kéne ilyen probléma legyen két war között. A frameworköknek és konténereknek kéne megoldani, hogy ilyen ne legyen, mégis gyakran előfordulnak ehhez hasonló érdekességek.
A RuntimeDelegate lehet speciális, mivel javax-es package-ben van, és elképzelhető, hogy ezt a jetty a system classloaderrel tölti. Valami közös szülő classloadernek lennie kéne a két alkalmazás között, ami okozza a problémát, másként érvényesülne az, hogy a szóban forgó osztályok a war-ok WEB-INF/lib WEB-INF/classes-eiből töltenek, mivel ez prioritást élvez, és a két "különböző" verzió nem akadna össze.Meg egyáltalán... nem a thread contextclassloaderét kellene használnia egy objektum legyártásakor? Vagy ilyenkor a legyártást végző osztály classloaderét örökli az új objektum? Ezekszerint az utóbbi.
Utóbbi. A createUriBuilder működhetne úgy is, hogy a thread context classloaderrel tölt be egy implementációt, de a bemásolt kód nem ezt teszi (az se biztos, hogy ez a sor indukálja a class betöltését).
Amúgy hol vannak a resteasy lib-ek? WEB-INF/lib-ben van mindkét war-ban ugyanaz a verzió?
Én a "-verbose:class" -t is megnézném, hátha valami összefüggés kiolvasható belőle. -
Lortech
addikt
válasz
MrSealRD #5815 üzenetére
Nem kell belelátni olyat a kommentembe, ami nincs ott. Nem mondtam, hogy ne használj getter/settert, azt mondom, hogy nem ettől leszel önmagában OO konform, ha csinálsz no-brain getter-settert minden meződhöz, ez csak a hamis érzetét kelti. Ha valamit el kell rejteni, akkor rejtsd el. Ha tudni kell hozzáférni, módosítani, akkor kellhet getter/setter. Ha meg _utólag_ logika kell a getter/setterbe, megsértheted a korábbi kontraktot.
-
Lortech
addikt
válasz
bucsupeti #5809 üzenetére
Egyébként nagyon csúnya dolog javában a publikus adattag. Ilyen pl a Player osztályban a number. Ugyan működik a program de az egyik objektum-orientált elvet sérti meg a program, mégpedig az egységbezárást (Encaptulation). Illik private-ként deklarálni az adattagokat, és getter/setter metódusokkal intézni az adattagok írását, olvasását.
Hát azért ez egy picit nem ilyen egyszerű. Azzal, hogy private-té teszel minden tagváltozót és mindenre csinálsz "no-brain" gettert/settert (mindenféle logika nélkül, csak változó beállítás, változó visszaadás, mint a ahogy a java kódok nagy részénél látható) ezzel lehetővé téve, hogy kívülről megváltoztassák az objektumod belső állapotát, még nem vagy sokkal közelebb az egységbezáráshoz ahhoz képest, hogy mindent publicon hagysz.
-
Lortech
addikt
Ennyi erővel ezer + 1 dolgot sem tanítanak, csak java-n belül is végtelen időt el lehet tölteni különböző területek, technológiák tanulmányozásával. És nem elvárható, hogy az oktató fél évente új tananyagot gyártson, mert épp új android verzió vagy paradigmaváltás van egy technológián belül. Még aki teljes időben ezzel foglalkozik se tud mindent lekövetni, kipróbálni.
A matek alap viszont úgymond örök. Nekem inkább azzal volt bajom a felsőoktatásban a matek kapcsán, hogy nem hozták össze jobban az informatikai alkalmazásával. Nem biztos hogy ~ugyanazt a matekot kéne tanítani egy programozónak meg egy matekosnak, és ez alatt nem azt értem, hogy infósnak gyógymatek legyen, hanem hogy megpróbálják bemutatni, hogy miért fontos elsajátítani, mihez kellhez. Ehhez persze olyan oktató kell, aki több területen is aktív, nem csak jó matekos, hanem infós is.
Talán ki lehetne dolgozni egy jobb módszert, tananyagot is, aminek következtében az infós hallgató több értelmét látná a matektanulásnak, ezáltal nem csak a túlélésre játszana belőle, mint a többség. Aztán kilép államvizsgáról és már el is felejtette az egészet.. -
Lortech
addikt
Valószínűleg nem véletlenül írják. Látni kéne, milyen certet tudnak adni, de könnyen lehet, hogy a java default truststore-ja nem hitelesítené a netlock által kiadott tanúsítvánnyal aláírt kódot. Így sokra nem mész vele, ha ezt használod aláírásra, java verziótól függően vagy security warningot adna vagy meg is tagadná a program futtatását (pl 1.7_45-től).
A legutóbbi, biztonsági modellt érintő változtatásokkal még rúgtak egyet ebbe az amúgy is döglődő RIA platformba. Persze dicsérendő, hogy a biztonságra ráfeküdtek, csak már sokkal korábban kellett volna, kevesebb lett volna a fejlesztőknek okozott kár.. -
Lortech
addikt
Röviden. Kétféle java "csomag" van:
-JRE: java alkalmazások futtatására
-JDK: JDK > JRE, java alkalmazások futtatására és fejlesztésére való
javac, a java compiler a JDK telepítővel jön, JRE-ben nincs benne. Ha a PATH környezeti változóba csak a JRE home bin könyvtárát teszed, akkor nem fogod tudni parancssorból elérni a javac-t, csakha megadod a teljes elérési útját minden alkalommal a jdk-nak.Windows parancsorban a SET paranccsal beállított környezeti változó elveszti értékét amint bezárod az ablakot.
Tehát vagy beállítod rendszer / felhasználói szinten a szükséges környezeti változókat a windows környezeti változói között ( control panel / system / advanced system settings fül / advanced fül / environment variables gomb) vagy minden alkalommal beállítod őket egy új paranccsor megnyitásánál, ez a művelet egy pici batch fájllal is automatizálható.pl. ha c:\jdk könyvtár a jdk home-od, akkor:
cmd
SET PATH=c:\jdk\bin;%PATH%
... javac ...
..java... -
Lortech
addikt
válasz
juhasz22 #5036 üzenetére
A már írt okok miatt én az utolsó lépést nem akarom megtenni helyetted (vagy más helyett), valamint a jelszavadat sem akarom tudni, anélkül pedig elég nehézkes lenne segíteni. Feltehetőleg a telefonon is kell legyen egy reenger.xml nevű fájl valahol, ebben a fájlban a
<pass>crypto(1,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)</pass> sort kell kicserélned a gépeden lévőre.De mindegy, közben összehánytam ide: [link]
1, Kattints a linkre.
2, az Input Arguments (args of Main Method)... szövegmezőbe írd be a .reenger.xml-ben található crypto(1,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) sorból a "," és ")" közötti szöveget,
tehát pl. <pass>crypto(1,67ded21c107401015d5a05020163701f60)</pass>
esetén ez a 67ded21c107401015d5a05020163701f60
3, nyomd meg az execute-ot.
4, ha mindent jól csináltál, "Result... " alatt ott lesz a jelszavad az oldal újratöltése után. -
Lortech
addikt
válasz
WonderCSabo #5032 üzenetére
Sajnos nem tudom. Lehet, hogy nem volt egyértelmű, de ezt a decode-t természetesen nem én írtam, hanem a program szabadon elérhető forráskódjából szedtem ki.
juhasz22: elnézést, a fiddler amúgy is rossz tipp volt, mert a java alkalmazás http forgalmát nyilván nem fogja meg attól, hogy web startból indul. Csak a böngészők (abból se mindegyikét) forgalmát mutatja. Én konkrétan wiresharkot használtam, http protokollra szűrve. Fiddler némileg egyszerűbb használni, ezért ajánlottam. Egyébként mindkettő arra jó nagy vonalakban, hogy megmutatja a hálózati forgalmadat, előbbi http protokoll, utóbbi alacsonyabb szinten. Az xml fájlhoz nincs közük, az a másik módszerhez kell, ha te magad akarod a fenti metódussal visszanyerni a jelszót, aminek a kódolt változata az xml-ben van.
-
Lortech
addikt
válasz
juhasz22 #5024 üzenetére
Mi? Írtam, hogy kétféleképpen is vissza lehet nyerni a jelszót ennél az alkalmazásnál.
User mappába / .reenger.xml-be rakta nálam, de itt be van hashelve.pl: "<pass>crypto(1,67ded21c107401015d5a05020163701f60)</pass>" = "test"
Ennyi a decode:
public static String decodePassword(String crypto) {
int sl = crypto.length();
if (sl < 10) return null;
char key = (char)(int)Integer.valueOf(crypto.substring(8,10), 16);
char newkey;
crypto = crypto.substring(10, sl - 8);
int cl = (sl - 18) / 2;
char ca[] = new char[cl];
for(int p=0;p<cl;p++) {
ca[p] = (char)(int)Integer.valueOf(crypto.substring(p*2, p*2+2), 16);
newkey = (char)(key ^ ca[p]);
ca[p] ^= key;
key = newkey;
}
crypto = new String(ca);
//System.out.println("d1=" + crypto);
cl = crypto.length() / 2;
ca = new char[cl];
for(int p=0;p<cl;p++) {
ca[p] = (char)(int)Integer.valueOf(crypto.substring(p*2, p*2+2), 16);
}
for(int p=0;p<cl;p++) {
ca[p] ^= 0xaa;
}
char tmp;
for(int p=0;p<cl/2;p++) {
tmp = ca[p];
ca[p] = ca[cl-p-1];
ca[cl-p-1] = tmp;
}
return new String(ca);
}De még egyszerűbb a fiddlert felrakni és megnézni a http forgalmat, ha nem értesz java-hoz.
-
Lortech
addikt
válasz
Lortech #5022 üzenetére
Itt konkrétan 1 perc volt megtalálni a beírt jelszót, mivel mezítlábas http-n plain text-ben küldözgeti.
Még 2 perc volt megtalálni hogy hol van a fájl, ahol a jelszót hashelt (nem egyirányú) formában tárolja, majd még néhány perc volt, amíg az alkalmazás nyilvánosan elérhető forrását felhasználva a beírt jelszavamat visszafordítottam a hashből. -
Lortech
addikt
válasz
M_AND_Ms #5017 üzenetére
Szerver oldalon titkosítva illik tárolni, és titkosítva is illik továbbküldeni a kliensnek a szerver felé, de kliens oldalon mivel a kliensnek nem ártana tudnia a jelszót a szerver felé elküldeni autentikációra, ezért még ha nem is plain textben van valahol tárolva a mentett jelszó, a kliens oldalon akkor is rendelkezésre kell álljon minden információ az eredeti jelszó visszanyeréséhez vagy legalább a sikeres autentikáció reprodukálásához (pl. ha közbe van iktatva egy hash és a szerver is hasht vizsgál).
Ezek szerint a böngészők sem biztonságosak ilyen szempontból, mert tárolják a jelszavakat, nem plain textben, de visszanyerhető formában. Pl. chromeban ilyen egyszerű: chrome://settings/passwords Egyébként tényleg nem biztonságos a jelszó megjegyeztetése kb. sehol, ez egy kényelmi feature. Ha egyszer az alkalmazásnak is vissza kell tudnia nyernie a mentett jelszót vagy annak lenyomatát, akkor ugyan lehet bonyolítani a dolgot a tárolásnál és autentikációnál, de ha helyileg hozzáférsz a géphez, ahol meg van jegyeztetve a jelszó, akkor mindig meg lehet szerezni a jelszót vagy azt a tokent amit autentikációhoz használ az alkalmazás.
Abban viszont egyetértek, hogy az elfelejtett jelszóra a gyógymód az, hogy fel kell venni a kapcsolatot a gyártóval / szolgáltatóval az új jelszó igénylése érdekében. Amúgy sem célszerű senkinek ilyen dolgokban segíteni egy névtelen fórumon, ahol nem lehet meggyőződni arról, hogy az illető tényleg jogosult-e a jelszó megismerésére, a szolgáltatás használatára.
-
-
Lortech
addikt
Néhány nap leforgása alatt egy nagyobbacska vállalatirányítási rendszer különbözői moduiljaiból és ezek különböző verzióiból >5-tel kell általában valamilyen módon foglalkoznom, fejlesztenem, kódot analizálnom. Ritka az, amikor pár napig egy dologgal tudok foglalkozni. Ezek az alkalmazások általában egyenként is elég nagyok és inhomogének technológiailag, szeretem őket strukturálni. Ha mindent egy workspace-be beletennék, egy (véletlen/kényszerű) teljes rebuild, vagy az eclipse újraindulás, típus újraindexelés, lookup, keresés, fájdalmasabb művelet volna.
-
Lortech
addikt
válasz
Vasinger! #4305 üzenetére
Az eclipse nem egy notepad azért, 10 mp kifejezetten jó szerintem. Ha napi 50-szer megnyitod az eclipse-et, ami nem hiszem, hogy jellemző, akkor egy gyorsabb indulással megspórolnál napi néhány percet..
Nekem van hogy hetekig megy egy workspace-em, nyitva van 5-10 workspace egyidőben.. 10 mp indulás legyen a legnagyobb bajod.
Túrtam egy linket azért [link], ha gondolod, próbáld ki. -
Lortech
addikt
Lehet olyan externel tools launchot csinálni egy kamu batch filet indítva, aminek megadhatsz a refresh fülön tetszőleges, frissítendő projekt halmazt. Persze minden projektre ctrl + a és f5 gyorsabb, egyszerűbb.
Meg van ilyen opció is: Refresh using native hooks or polling - bár nem használom. -
Lortech
addikt
válasz
kemkriszt98 #3911 üzenetére
[link]
Érdemes átnézni a hozzászólásokat és az ajánlott linkeket. Swing - de úgy általában a ui - nem olyan egyszerű, mint amilyennek tűnhet, célszerű utánaolvasni a swing lelkivilágának. -
Lortech
addikt
Egy akármi alkalmazás futtatása miatt nem szoktunk globálisan classpatht beállítani. Kényelmetlen, értelme nem sok, és alattomos problémákhoz vezethet, ha az ember megfeledkezik róla. Ha már a CLASSPATH környezeti változóval akarunk classpatht megadni a jvm-nek, akkor az alkalmazás indítóscriptjében egyszerűen beállítjuk a változót.
run.bat tartalma:
SET CLASSPATH=..\classes
java package.akarmi.MainClassEgy-két cp bejegyzésre ez is felesleges, helyette:
java -classpath ..\classes package.akarmi.MainClass -
Lortech
addikt
válasz
Fooler89 #2756 üzenetére
Miért ne tudnál beolvasni jar fájlból? Inputstreamet csinálsz a resource-ból és azt adod a Scannernek.
String.splittel tudsz például tab mentén vágni regexszel (\\t), de akár opencsv is szóba jöhet. Számtalan megoldás van, attól függően, hogy pontosan mi és mekkora az input, és mi a pontos cél. Egy jó tanács: ha több időt szánnál a kérdéseid, céljaid pontos megfogalmazására, akkor jobb válaszokat kaphatnál. -
Lortech
addikt
-
Lortech
addikt
válasz
bolcsodal #2459 üzenetére
Létrehozhatsz te is egy parancsikont az asztalon, amelyben parancsnak megadod, amit a cmdbe is írtál az imént, valamint megadod a start in-nek a program könyvtárát, amiben a mauve.jar helyet foglal, akkor el kéne induljon (utóbbi azért szükséges, hogy a java megtalálja a jart).
AbevJava is csak egy java program, ami használja a java vm-et, de nem kéne belepiszkítson, legjobb tudomásom szerint semmi ilyet nem is tesz. -
Lortech
addikt
válasz
bolcsodal #2457 üzenetére
Ha beírod a parancssorba (cmd), hogy java -jar Mauve.jar a program könyvtárából (cmd-t a program könyvtárából indítva totalcommanderrel) akkor mi történik?
A tulajdonságoknál a Start in mező ugyanaz, mint a notin ? A program ugyanoda van telepítve?
Én megpróbálnám egy másik java telepítéssel, letöltesz egy másikat, és átírod a target sort az új verziónaknak megfelelően.
-
Lortech
addikt
válasz
pakriksz #2452 üzenetére
Annyit használ, amennyit a default maximum heap size (vagy permgen) megenged neki.
Az -xmx paraméterrel felülbírálható, pl. -Xmx1024m.#2451 bolcsodal:
meg kéne vizsgálni, milyen java futtatókörnyezet és verzió a követelmény a program futtatáshoz, és ehhez képest milyen java van telepítve a gépen, illetve a másik gépeken. Ha oracle/sun jvm van a másik gépeken, akkor parancssorba beírva java -version paranccsal le tudod kérdezni a verziót. Ezt kéne feltelepíteni a gépre.
Pl. Oracle 1.6 jre itt
Ha ezután sem működik, meg kéne vizsgálni, hogy a program hogyan indítja saját magát, pl. PATH-ból vagy más környezeti változón keresztül eri el a javat. -
Lortech
addikt
válasz
pakriksz #2440 üzenetére
Annyi (nyilván az erőforrások és a futtatókörnyezet adta keretet között) külső programot indíthatsz el akár ugyanabból a threadből is, amennyit csak akarsz. A külső programtól függ, hogy megakadályozza-e, hogy futtathass több példányt belőle. Ha nincs ilyen limitáció, akkor valószínűleg valamit rosszul csinálsz.
-
Lortech
addikt
Sok lehetőség van classpath beállításra.
Legjobb, ha az indítást, classpath beállítást egy batch fájlba foglalod.
Én az alábbiakat szoktam preferálni:
-kitöltheted a CLASSPATH környezeti változót, ezt automatikusan használni fogja a java.
-megadhatod java-nak az alábbi paramétert: -classpath %XYZ_ENV_VAR%, ahol XYZ_ENV_VAR környezeti változó tartalmazza a classpath bejegyzéseket. (ha ugyanazon a konzolon futtatsz különböző java alkalmazásokat (különböző classpathokkal), akkor célszerű különböző classpath változókat használni az egyértelműség kedvéért)
Classpathban megadhatsz könyvtárat is 1.6 felett csillaggal kijelölve benne az összes jart, pl. létrehozol egy lib könytárat, benne a jar fájlokkal, és
set CLASSPATH=lib\*A másik kérdésed nem teljesen világos. A sort metódusnak tetszőleges Comparator argumentumot meg tudsz adni (de akár lehet egyetlenegy Comparatorod is, ha generikus Comparatort írsz, típusonként szétválasztva az eseteket) . Ha az egy paraméteres sortot használod, akkor pedig az elemek Comparable implementációja mondja meg, hogy mi a sorrend, a compareTo metódusban meg azt vizsgálsz, amit csak akarsz.
-
Lortech
addikt
válasz
Neil Watts #2420 üzenetére
Nálam ~100000 osztályos projektnél, pluginekkel megrakva sem lassú az eclipse ganymede-től indigoig. Talán lassúnak tűnhet az indulása, kicsit be kell járatódnia.
Amikor létrehozol egy új workspace-ben egy új projektet, akkor szól, hogy mi az alap nézet (perspective). Ez itt a jobb felső sarokban állítható:
Ha létrehozol egy java projectet, akkor alapból java nézetet ajánlja fel. Bal oldalt a package explorerbent (vagy windows/show view / package explorer és oda húzod ahova akarod) tudod tallózni a workspace tartalmát, például a package-ek alatt a kódokat (default könyvtár a /src, ha vannak.
-
Lortech
addikt
válasz
pakriksz #2410 üzenetére
Ha duplaklikkel futtatod, akkor az os jar fájl társítása határozza meg, mivel fut, ha a java -jart ... parancsot kiadva futtatod, akkor pedig a %PATH%-ban található java-val fut. A kettő nem szükségképpen uaz.
Collections.synchronizedList()-nek mennie kell generikusokra, ahogy írták előttem. pl.
List<T> xyz = Collections.synchronizedList(new NoDuplicateList<T>()); -
Lortech
addikt
Ha még aktuális, illeszd be a kódot úgy, hogy bemásolod azt a hozzászólás írása szövegdobozba, kijelölöd, majd rányomsz a programkód gombra az alsó sorban, ezáltal a fórummotor nem fogja dőlt formázásként értelmezni az [I]-ket, melyek nálad tömb indexet jeleznének, és ugyanazt fogjuk látni mi is, mint amit beszúrtál.
-
Lortech
addikt
válasz
jonnyjoker01 #2160 üzenetére
Pontosabban a szoftverfejlesztés alkategórián belüli Java topic.
Az adott telefon JAVA implementációjától függ, hogy mit lehet vele kezdeni, a linkeket konkrétan corbyra találtam, nem tudom, más telefonoknál alkalmazható-e. Nem azért szoktuk az egyéb topikokat javasolni, mert lusták vagyunk segíteni, még igazán offtopiknak sem mondanám a kérdést, hanem azért, mert ott valószínűleg tényleg nagyobb eséllyel tudnak segíteni. -
Lortech
addikt
[Type interface]
A példa általánossága miatt áll itt ez az interfész, bármilyen típusú elemeket tartalmazó lista iterálható vele. -
Lortech
addikt
válasz
alapz@j #2123 üzenetére
Nem, adatbázis fájlt, mégha embedded is, legfeljebb a disztribúció megkönnyítése miatt tárolunk jar fileban, esetleg csak olvasható módban fel lehet csatolni az adatbázist, ha az támogatja. Normálisan, általános használatra külön fájl / könyvtárban legyen a jar fájlon kívül.
-
Lortech
addikt
válasz
Revolit #2121 üzenetére
Én csinálnék erre egy saját megvalósítást, Map-et implementálva, plusz esetleg közelebbi megvalósítást extendálva. Talán legközelebbi a [LinkedHashMap]. Ennek nincs Indexof -a, a láncolt lista megvalósítás miatt viszonylag költséges lenne nagy elemszámnál.
-
Lortech
addikt
Persze, én is csak tippeltem, akár más típus is lehetett (volna) tablemodel helyett, és akkor a getValueAt visszatérési értéke is lehetett (volna) más típusú, így a hiba is lehetett (volna) más, nem derült ki egyértelműen.
Ezért javasolnám ubidnak, hogyha hibába ütközik, akkor ne csak ennek tényét, hanem a hibaüzenetet másolja be mindenképpen. -
Lortech
addikt
Nehéz, mert pontos válaszhoz továbbra is jobban kéne ismerni az alkalmazásod felépítését. Enélkül csak tippeket lehet adni.
super.paintComponent(g);
Sorral ki kéne egészíteni a
public void paintComponent(Graphics g) metódusod. Feltéve, hogy arra a panelra rajzolsz hátteret, amiben a komponensek is vannak, amik most nem látszanak a háttér rajzolása miatt. -
Lortech
addikt
Ez azt jelentheti, hogy nincs a PATH környezeti változóban a javac elérési útja.
pl windows 7 esetén: [link]
pl. ha itt volna a Java compilered : c:\Program Files (x86)\Java\j2re1.4.2_19\bin\
akkor ezt kéne beletenni a PATH nevű változóba. A parancssort újra kell indítani ahhoz, hogy a környezeti változók változása frissüljön.
-
Lortech
addikt
egy lehetséges értelmezése a feladatnak:
Nincs meghatározva, hol dobj kivételt, a konstruktorban ellenőrizd-e a paramétert, vagy a hívás előtt a mainben.
Nincs meghatározva az sem, hogyan írasd ki, pl. lehetne olyan metódusa is a Kor osztálynak, ami egyből a kimenetre ír, nemcsak számol. Vagy lehet a mainben is csinálni a számolást és kiíratást is stb.
0-t nempozitívnak vettem.
...
public class Korkeruletterulet {
public static void main(String[] args) {
Kor kor = new Kor(12);
System.out.format("%.2f sugarú kör kerülete: %.2f, területe: %.2f",
kor.getSugar(),kor.getKerulet(),kor.getTerulet());
kor = new Kor(-7.5);
System.out.format("%.2f sugarú kör kerülete: %.2f, területe: %.2f",
kor.getSugar(),kor.getKerulet(),kor.getTerulet());
}
}
...
public class Kor
{
private double sugar;
public Kor(double r) throws IllegalArgumentException
{
if (r <= 0)
{
throw new IllegalArgumentException("Nempozitív sugár!");
}
else
{
this.sugar = r;
}
}
public void setSugar(double r) {
this.sugar = r;
}
public double getSugar() {
return sugar;
}
public double getKerulet()
{
return Math.PI * 2 * sugar ;
}
public double getTerulet()
{
return Math.PI * sugar * sugar;
}
}... -
Lortech
addikt
Értem. Ha könyv, és szó szerint veszem a feladatot, akkor tényleg annyi a feladat, hogy eldobod a kivételt, és nem kezeled le, ezáltal a program leáll. Nem mondja a feladat, hogy ki kell iratnod bármit, ha nempozitív az adat.
Bővebben:
A main fgvből hívod a kör osztályod konstruktorát, ha a konstruktorban dobsz egy kivételt, akkor az adott metódusban szekvenciálisan haladva az első kivételkezelő blokkra ugrik, ha nincs, akkor a konstruktor metódusod visszatér a hívás helyére, azaz a main függvénybe, és ott keres kivételkezelő blokkot, ha ott sincs lekezelve a kivétel, akkor a jvm-hez tér vissza a hibával, a program terminál hibával, a jvm leáll. Véleményem szerint ennyi a feladat. -
Lortech
addikt
Nem szokásom teljes kódot adni, mert ez nem a megcsinálom a beadandódat című topik.
Legtöbbet úgy tanulsz, ha te hozod össze.
1,A feladat nem írja elő a kivételkezelést, csak azt, hogy dobjon kivételt rossz adat esetén, ami itt azt fogja eredményezi, hogy megáll a programod.
Persze ha úgy gondolod, a tanár arra gondolt, hogy kezeld is le a kivételt, akkor tegyél bele kivételkezelést, de leírva nem ez van.
1, A feladat továbbá azt mondja, ha pozitív a sugár, akkor dobjon kivételt, ez nem ekvivalens azzal, hogy kisebb mint 1.
Látható a példa adatból is, hogy -7.5-ről van szó, tehát nem egész számokról beszélünk, hanem legalább egy floatról. -
Lortech
addikt
Egy null referenciával inicializált tömbnek nincsen eleme.
Ha arra gondolt, hogy egy referencia típusú elemekből álló tömb elemeit null referenciákkal inicializálva, írd ki annak n. elemét, akkor :
System.out.print(tomb[n-1]);
// ahol tomb a tömb változód, és n-1 az n. eleme a tömbnek, mivel 0-tól kezdődően indexeljük a tömböt, azaz a tömb 2. elemének kiiratása: System.out.print(tomb[1]); -
Lortech
addikt
válasz
eziskamu #1957 üzenetére
Szerintem egy ablakos alkalmazásnál a megfelelő double buffering a legtöbb esetben elég. Ablakos játék v. animáció már más kérdés.
Swing alapból tudja, saját rajzolgatásnál is egyszerűen implementálható.
Próbáld meg, hátha javít.
JComponent.setDoubleBuffered()
Nem lehet hogy eleve ez a mozgató logika is lassú ? Nem terheli nagyon a procit ? -
Lortech
addikt
válasz
Revolit #1951 üzenetére
de általánosságban is érdekelne a kérdés: ha létrehozok egy objektumot, akkor annak az objektumnak minden fv-ét el tudom érni (hacsak nem private...), de mi van, ha én a létrehozott objektumból akarom meghívni a létrehozó objektum fügvényét? azt hogyan csinálom? Tehát kommunikáljon mindkét irányba.
Szóval alapvetően ilyen szempontból megkülönböztetünk static - osztályszintű és példányszintű függvényt.
Osztályszintű függvényt az osztály nevén keresztül tudsz meghívni - osztályszintű fgv definícióban nem hivatkozhatsz az osztály példányszintű mezőire illetve fgv-eire, mert azok az osztály egy konkrét előfordulásához, példányához kötődnek.
Példányszintű függvényt az osztály egy adott példányánának referenciáján keresztül hívhatsz meg.
Konkrétan a kérdésedre válaszolva, ahhoz szükséged van a "létrehozott" objektumban a létrehozó objektum egy példányára, ill. annak referenciájára. Ezt biztosíthatod úgy, hogy átadod a létrehozott objektumnak paraméterként (pl. konstruktorban), vagy az adott függvénynek, ahonnan hívni akarod a létrehozott objektumot. Bizonyos esetekben az is megoldás lehet, ha a "létrehozott" objektumban példányosítasz a létrehozó objektum típusából - ha nem lényeges az _eredeti_ objektum belső állapota (ált. ezek osztályszintű fgv-ek, de nem feltétlenül). Akár a létrehozott objektum egy mezője is lehet ez a példány, tarthatod ott is a referenciáját.
A legfontosabb, hogy mielőtt netbeansben egy GUI-t összekattintgatunk, az alapokkal tisztában legyünk.. mert egyszerűnek látszik a felhasználóbarát GUI builder, de ettől még tudni kell java-ban programozni, ha faéknél bonyolultabb programot csinálsz.. -
Lortech
addikt
válasz
Parameter #1948 üzenetére
Ahol kiíratnád őket, összefűzöd őket egy stringbe (v. stringbufferbe)
A megadott kódból kiindulva:
StringBuffer sb = new StringBuffer();
for (int i = 0; i < tomb.length; i++) {
for (int j = 0; j < tomb[i].length; j++)
{
sb.append(tomb[i][j]).append(" ");
}
sb.append(System.getProperty("line.separator"));
}
System.out.print(sb);(nyilván ezesetben az első ciklusban is megtehető lenne, de gondolom valamit kezdeni is akarsz az elemekkel majd)
-
Lortech
addikt
válasz
Peter Kiss #1944 üzenetére
-
Lortech
addikt
-
Lortech
addikt
válasz
Chris_T #1714 üzenetére
e.getSource().equals(gomb1)
Az eseményt kiváltó, ill azon komponens referenciáját adja vissza a getSource, amelyen az esemény történik, ezt hasonlítja a paraméterként adott objektum-referenciával.
Pl. ha több komponensnek is ugyanazt az eseménykezelőt adod meg, akkor így tudod meghatározni, hogy melyik komponensedről van szó éppen a konkrét esemény feldolgozása közben.
-
Lortech
addikt
-
Lortech
addikt
válasz
Cathfaern #1430 üzenetére
Gondolom nem "java" tárgy, hanem algoritmusok és adatszerkezetek vagy valami hasonló, ahol nem a feladat megoldása a lényeg, hanem az adatszerkezet megvalósítása. Arról persze lehet vitatkozni, hogy erre a java lenne a legalkalmasabb-e, mivel sokkal egyszerűbb pár dolog miatt (pl gc), mint c-ben.
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- LG 39GS95UE - 39" Ívelt OLED / QHD 2K / 240Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
- Azonnali készpénzes félkonfig / félgép felvásárlás személyesen / csomagküldéssel korrekt áron
- ÚJ Apple Macbook Air 15,3 M4 10C CPU/10C GPU/16GB/256GB - Ezüst -(2025) - 3 év gari - MAGYAR
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB DDR5 RTX 4070Ti Super GAMER PC termékbeszámítással
- Motorola E40 64GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest