View Full Version : Problema (folle? :|) Java
Axet
16th September 2011, 00:55
Sarà l'ora, sarà che non ho staccato praticamente tutto il fottuto giorno, ma son fermo su sta cosa da più di 1 ora.
Ho un progetto Java che dipende da altri due. In un metodo di una classe del progetto "principale" c'è un'invocazione ad una classe che sta in uno dei due progetti da cui il primo dipende. Il tutto funziona senza problemi, l'algoritmo gira e siamo tutti contenti.
Il problema è saltato fuori quando ho creato un jar per eseguirlo poi in remoto su un'altra macchina un zinzinino più potente della mia: facendo un test (nota: in locale, sulla macchina in remoto non ci ho ancora messo un cazzo) per vedere se c'erano problemi di sorta, ho notato che nel momento stesso in cui il programma arriva all'invocazione alla classe di cui parlavo sopra, termina. Pensavo fosse un problema relativo a quello che è stato incluso nel jar, ma ho smanettato con tutte le opzioni e non penso che sia dovuto a questo. Anche perchè, attenzione attenzione, se io uso una classettina per testare piazzata nello stesso package e nello stesso progetto di quella incriminata (così da non dover importare niente, giusto per sicurezza) e lo lancio da Eclipse (quindi niente jar), il programma TERMINA AL MOMENTO DELLA CAZZO DI CHIAMATA. Debuggando salta fuori che quando arriva all'invocazione, il Loader non trova la classe invocata (!!) e quindi il tutto termina. Ora, come cazzo può essere? Il nome della classe ovviamente è giusto, non ci sono errori nè un cazzo (e, per altro, la stessa fottuta classe-test l'avevo scritta già molto tempo fa, non l'ho mai cambiata, e prima andava).
Idee e consigli sono ben accetti perchè non so più dove sbattere la testa -_-
Hador
16th September 2011, 08:01
6 ours ago? :sneer:
non ho capito comunque la seconda parte, cioè se invochi la classe dal progetto esterno funziona e se la invochi da dentro no? La classe test invoca la classe incriminata istanziandola o tramite reflection? Posta la stampa dell'errore e più dettagli che così si può far poco. Ah, prova a usare fat jar per fare il jar e prova ad eseguirlo anche su macchina non mac nel caso in cui tu abbia qualcosa di dipendente dal SO (path se non usi il separator universale o la gui ecc)
San Vegeta
16th September 2011, 08:13
non ho capito cosa stai facendo... prova a spiegare un po' meglio :)
Axet
16th September 2011, 10:20
6 ours ago? :sneer:
non ho capito comunque la seconda parte, cioè se invochi la classe dal progetto esterno funziona e se la invochi da dentro no?
Esatto. Se la chiamo dal progetto 1 (che dipende dal progetto 2), funziona. Se la chiamo dal progetto 2 (e addirittura dallo stesso package), no.
La classe test invoca la classe incriminata istanziandola o tramite reflection?
Istanzia normalmente
Posta la stampa dell'errore e più dettagli che così si può far poco.
Ehm l'ho già scritto eh. L'errore NON C'E'. Il programma termina come se fosse arrivato alla fine, non dà errori.. però debuggando vedi che quando fa l'invocazione, parte il ClassLoader e invece di entrare nella classe invocata ti dice "Source non found" (il debugger eh) e finisce. :shrug:
Ah, prova a usare fat jar per fare il jar e prova ad eseguirlo anche su macchina non mac nel caso in cui tu abbia qualcosa di dipendente dal SO (path se non usi il separator universale o la gui ecc)
Per il fat jar non credo, visto che il problema ce l'ho anche da dentro eclipse. Per l'altro punto, nope: non ho niente di dipendente dall'SO, a parte qualche percorso ma è specificato come assoluto
Hador
16th September 2011, 10:36
no spe java non funzia così, se tu vuoi accedere ad una classe che non trova ti caccia una exception (a meno che tu non abbia buttato tutto in un try catch fuffa senza il throw dell'eccezione, e li te lo meriteresti :D).
Se sei in bicocca il pome son li, se vuoi ci do un occhio :nod:
Axet
16th September 2011, 10:40
no spe java non funzia così, se tu vuoi accedere ad una classe che non trova ti caccia una exception (a meno che tu non abbia buttato tutto in un try catch fuffa senza il throw dell'eccezione, e li te lo meriteresti :D).
Se sei in bicocca il pome son li, se vuoi ci do un occhio :nod:
Appunto, infatti ho detto problema folle.
edit:
non so forse devo andare giu, se solo mi rispondessero alle mail t_t
Cmq per farti capire ho fatto due screen. Qui il codice della classe di test:
http://imageshack.us/photo/my-images/843/schermata20110916a10420.png/
dove SDWrapper è quello che da problemi.
Qui l'output su console:
http://imageshack.us/f/513/schermata20110916a10423.png/
Come vedi termina e stampa solo la lunghezza di input, senza arrivare a stampare "cane" (modificato apposta prima di fare lo screen, vi lascio immaginare cos'era prima). Non spara fuori errori nè niente.. boh mi sto incazzando :D
Hador
16th September 2011, 11:10
andiamo per tentativi:
- cambia le prime 2 righe, per esser sicuri che sia colpa del dopo e non del prima (messi una syso e basta senza lo string[] ecc)
- fai un cleanup della cartella dei sorgenti (da source -> cleanup)
- prova la stessa cosa da un'altra classe.
passami il progetto :sneer:
ah ribuilda tutto anche.
Axet
16th September 2011, 11:33
andiamo per tentativi:
- cambia le prime 2 righe, per esser sicuri che sia colpa del dopo e non del prima (messi una syso e basta senza lo string[] ecc)
?
Le prime due righe sono una dichiarazione di un array di string e una syso eh, se tolgo lo string[] non funziona più un cazzo saltano ovviamente fuori errori su variabili non dichiarate -_-
- fai un cleanup della cartella dei sorgenti (da source -> cleanup)
Già provato, nada
- prova la stessa cosa da un'altra classe.
Da un'altra classe dello stesso progetto dove sta SDWrapper da lo stesso problema. Ma porco ido. Dev'essere qualcosa a livello di classpath..
Amiag
16th September 2011, 11:34
metti un try catch throwable su quelle due righe e stampa l'eccezione, detto cosi boh non ci ho capito granche ma puo essere qualsiasi cosa
Axet
16th September 2011, 11:36
metti un try catch throwable su quelle due righe e stampa l'eccezione, detto cosi boh non ci ho capito granche ma puo essere qualsiasi cosa
Già provato a piazzare un try catch, non caga fuori nessuna eccezione
Amiag
16th September 2011, 11:38
ma nel catch prendevi exception o throwable ? perche se e' un Error o qualcosaltro non lo prendi se metti exception, l'errore ci deve essere per forza altrimenti ti si e' incasinato qualcosa a livello di jvm ...
Hador
16th September 2011, 11:39
na secondo me ti si è sminchiata l'ast del progetto per qualche motivo che ignoro. Se provi a fare un rename (rename da refactoring non a meno) della classe incriminata funziona?
Axet
16th September 2011, 11:58
ma nel catch prendevi exception o throwable ? perche se e' un Error o qualcosaltro non lo prendi se metti exception, l'errore ci deve essere per forza altrimenti ti si e' incasinato qualcosa a livello di jvm ...
Provato con entrambi, nada.
na secondo me ti si è sminchiata l'ast del progetto per qualche motivo che ignoro. Se provi a fare un rename (rename da refactoring non a meno) della classe incriminata funziona?
Nope.
In compenso dall'altro progetto continua a funzionare come se non ci fosse mezzo problema... dio perchè mi fai questo
Axet
17th September 2011, 01:12
Risolto: il problema stava in un file di properties che nel progetto in cui stava la classe chiamata non c'era, quindi quando lo andava a reperire falliva e terminava.
Stesso problema per il jar: il file di properties non era nella cartella giusta (:gha:) e quindi non lo trovava.
Resta inspiegabile il perchè non sparasse fuori nessun errore, manco catchando sia exception che throwable, ma va bene così.
In ogni caso grazie per l'aiuto ;)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.