Kezdőoldal » Számítástechnika » Programozás » Mit csináljak? Java jre...

Mit csináljak? Java jre frissítés után csak a Netbeansben fut a programom, de holott 2 hónapja a jar file belőle működött, most az új jar belőle csak a keretet tölti be, és max.1-2 dolog működik.

Figyelt kérdés

Már régebb óta programozok Visual Studioban, és júliusban gondoltam egyet JAVA-ban nekiálltam egy projektnek. Javaban előtte sosem programoztam. Netbeanst használok. Nem is tudtam előre, hogy ennyi gond lesz vele.


Július végére már 3000 sorosra duzzadt a program, és tökéletesen működik. Már kiadtam tesztelésre Macintoshra és Linux distrokra is, és ott is működik. Természetesen jar fileban küldtem át.


Ezek után mással kellett foglalkoznom, ezért egészen idáig pihentettem a dolgot. Felfrissült ugye azóta a java jre is minden gépen. A java jre pedig állítólag visszafelé majdnem mindig kompatibilis. Na most jött a nagy csalódás. A Netbeansen belül tökéletesen fut továbbra is a program, de ha jarba vagy jlnpbe raknám nem fut egyáltalán, holott előtte ezekben működött. A kerete elindul, a menü is megvan, de pl. rengeteg dolog, pl. filementés sem működik, holott előtte működött.


Most nem vehetek rá minden felhasználót, hogy ne frissítse a java jret, csak azért mert nekem az nem jó, vagy rakja vissza a régit.


Viszont ez a dolog nagyon felbosszantott, és azon agyalok, hogy fogom és maradok visual studionál.


Erre a problémára szeretnék segítséget találni, hogy hol induljak el egy aktív java programozótól.


Szerintem mivel a programom tökéletesen futott előtte ezért én kódrészleteket nem közölnék, nem kódhiba lesz. Másrészt nem is szeretnék kiadni részleteket belőle. Azt sem hiszem, hogy ennyi idő alatt elavulna teljesen, és azért nem működik.


Szerintem ez olyan probléma, amire egy most is aktív java programozó kapásból tud válaszolni. Szerintem nagyon egyszerű gond lehet, csak mivel én új vagyok a javaban ezért nem tudom.


Előre is köszönöm.



2014. okt. 21. 10:36
1 2 3
 11/24 Tengor ***** válasza:
Nézd meg a projekt környezetét! Ott is általában át kell állítani, ha azt akarod, hogy a legújabbon futtasson.
2014. okt. 21. 11:49
Hasznos számodra ez a válasz?
 12/24 anonim ***** válasza:

Nem akarlak megbántani, kedves kérdező, de komoly kódminőségbeli gondokat sejttetnek az általad használt elnevezések, illetve a fájl(ok) hossza. Így pedig nem nehéz nem észrevenni akár egy kirívó és súlyos hibát sem.


Egyébként itt láthatod, hol van túl-/alulindexelve a tömb:

kj01.kezdolap.jButton6ActionPerformed(kezdolap.java:1006)


Nem egészen tiszta, hogyan futhat NetBeans alatt, míg java/javaw alatt nem.


Szabad megkérdezni, mit tartalmaz az adott sor?

2014. okt. 21. 11:52
Hasznos számodra ez a válasz?
 13/24 A kérdező kommentje:

Sajnos ugyanezt csinálja, de amúgy mutatom, hol dobja az arrayoutofboundsot:


jLabel33.setIcon(new javax.swing.ImageIcon(getClass().getResource("/kj01/pics/jkep1.png")));

jLabel34.setIcon(new javax.swing.ImageIcon(getClass().getResource("/kj01/pics/jlap1_3.png")));

oldal1 = jLabel33.getIcon().toString();

oldal2 = jLabel34.getIcon().toString();

//es/kj01 split

String stringsplit = oldal1;

String stringsplit2 = oldal2;

String[] parts = stringsplit.split("classes");

String part1 = parts[0];

String part2 = parts[1]; <- erre dobja.


De nem értem miért, hiszen létező stringről van szó. Tehát azt sem lehet mondani, hogy nem kerül bele semmi, mert akkor jogos lenne, de akkor a netbeansen belül sem futna le.


Tehát az a gyanúm, hogy itt valami a készült jar fileval van gond.


Ez a kódrészlet amúgy nem csinál mást, minthogy egy kép elérési útját stringgé alakítja, és utána annak csak egy bizonyos részletét szedi ki.

2014. okt. 21. 12:02
 14/24 Tengor ***** válasza:
100%

Az oldal1 tartalma az az imageicon .toString() metódusának értéke lesz. Ha ez nincs felül definiálva, akkor ez csak valami referencia hivatkozás sztringesített verziója. Abban nincs "classes" szöveg, így darabolás sem lesz, hanem egy elemű lesz a tömb, aminek csak 0. eleme van.


Egyébként ez a kód ez mit kellene, hogy csináljon?

2014. okt. 21. 12:07
Hasznos számodra ez a válasz?
 15/24 A kérdező kommentje:

Én nem akarom az egész programot belinkelni, mert ez egy olyan projekt,amit nem igazán szeretném, hogy mások megismerjenek, csak az a szűk kör, aki pl. teszteli.


Ehhez pedig be kellene.


A classes az egy mappa elérési útja, ahol a kép található.


A másik hozzászólónak:

Nem tudom miért nehéz elhinni, hogy netbeansben fut a dolog. Amúgy pedig köszi, hogy leszóltad úgy, hogy nem is láttál, csak egy hibát. Nem lehet egy JAVA program 3000 soros? Ennél sokkal több lesz, ha kész lesz. Ugyanis kb. 60 Mbyte méretű lesz.

2014. okt. 21. 12:14
 16/24 A kérdező kommentje:
Ez a kódrészlet azt csinálja, hogy van egy label, amiben van egy kép. A kép elérési útját stringgé alakítja, és olyan formába splitteli, amit ha lementek a mentésbe, akkor a betöltéskor ugyanezt a képet hívhatom elő a labelban.
2014. okt. 21. 12:21
 17/24 anonim ***** válasza:

Nem lehet egyetlen fájl 3000 soros. Azazhogy lehet, de legfeljebb az egyetemen.

Dolgoztam én már 4 gigabájtos projekten is, de ott is csak elvétve voltak többezer soros osztályok, és azoknak sem volt létjogosultságuk.


Mellesleg nem leszóltam, hanem kritizáltam, méghozzá joggal: A stacktrace-ből is láthatóan számos hibát elkövettél a program írása során, az utóbb behúzott kódrészlet pedig csak megerősíti ezt.

Volt egy tippem, hogy sértődés lesz a vége, de az nem az én saram.


Ha felháborodsz azon, amikor valaki rámutat arra, hogy elszúrtál valamit, akkor soha semmit nem fogsz tanulni, aztán meg jönnek az olyan esetek, mint amikor a saját kódodban nem ismered fel, hogy a 'jLabel33.getIcon().toString().split("classes");' miért ad egy elemű tömböt.


A kulcsszó: CLASSPATH


Amikor NetBeansben futtatod az alkalmazást (Eclipse alatt valószínűleg ugyanígy járnál), az a "classes" mappába fordít, illetve ide pakolja a resource-okat is, így olyankor az ImageIcon-ban töltött kép elérési útvonala tartalmazza a "classes" sztringet. Akkor viszont, amikor kiexportálsz JAR-ba, ez megváltozik, "classes" mappának se híre, se hamva, így viszont egy elemű tömböt fogsz kapni, ami magának az ikonnak a teljes elérési útja.


Ha lenne a kódnak struktúrája és koncepciója, ez a kérdés nem született volna meg.


Ajánlott irodalom:

Robert C. Martin - Clean Code: A Handbook of Agile Software Craftsmanship


Ajánlott eszközök:

Checkstyle, PMD, FindBugs (elérhetőek NetBeans plugin formájában)


Felmerül a kérdés, hogy ha csak perzisztálni szeretnéd, melyik labelben melyik kép lógott a legutolsó futtatáskor, akkor minek splittelgeted az elérési utat, ahelyett, hogy simán mentenéd úgy, ahogy van.



BTW, ha le akartalak volna szólni, akkor nem azt írom, hogy az általad használt elnevezések és fájlhosszok problémákat sejttetnek, hanem azt, hogy nem a Java nem user friendly, hanem te nem vagy igazi fejlesztő. Mivel segíteni próbálok, ezért ilyet nem jelentek ki; majd valaki más, itt úgyis mindig akad ilyen...

Nagyon szívesen segítünk, de ha már segítséget kérsz, akkor érdemes volna el is fogadni a hozzáértőbbek véleményét, ahelyett, hogy megsértődnél rajta.


Ha pedig mindenképpen zsonglőrködni akarsz a sztringgel, akkor javaslom, hogy hardcoding helyett találj egy dinamikus megoldást a megfelelő részlet extraktálására.

2014. okt. 21. 13:33
Hasznos számodra ez a válasz?
 18/24 A kérdező kommentje:
Tudtam, hogy a végén ez lesz, hogy a kódom lesz szétkapva de arra továbbra sem kaptam választ, hogy miért működik a jar egy korábbi jre-vel. Holott ha neked lenne igazad, akkor 2 hónapja sem kellett volna működnie, de működik. 2 hónappal ezelőtt ugyanezt a hibát kellett volna produkálnia. De mivel nem produkálta, ezért egy fejlesztő honnan tudhatná, hogy rosszul csinálta. Most felejtsük el, hogy mit hogyan, vagy mennyire macerásan akarok csinálni.
2014. okt. 21. 13:42
 19/24 A kérdező kommentje:

Ha C-ben megírtam valamit mondjuk 2 éve, az ugyanúgy működik most is. Viszont javanal jön egy frissítés, és már javíthatom is. Ez így nagyon nem frankó egy kezdőnek, akármit is mondasz. És ez nem a kezdő hibája.


Én azt hittem, hogy abban kapok segítséget, hogy a jar file készítésekor mit kell esetleg másképp csinálni, erre megkapom hogy "szar" a program, ami viszont 2 hónapja a jar fileból is futott. Ennyit erről. Ja és mentett is, semmi baj nem volt az array-val.

2014. okt. 21. 13:57
 20/24 Tengor ***** válasza:

Én továbbra sem értem, hogy egy gyári osztály toStringjében mit keresne classes.


Azt, hogy úgy veszel ki tömbből értéket, hogy nem ellenőrzöd a tömb méretét, az olyan hiba, amit frissítéstől függetlenül kellene javítanod. Ha lenne ellenőrzés a frissítés sem fektetné meg a programot.

2014. okt. 21. 14:10
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!