Newsgroup: it.comp.java
Titolo: Problemi sempre problemi con Eclipse

Salve a tutti, spero ci sia (ancora) qualcuno che frequenta il ng e magari 
usa pure Eclipse.
Purtroppo mi sta facendo impazzire da due giorni... su un progetto che fino 
alla scorsa settimana funzionava. Oltretutto si tratta di roba vecchia che 
nessuno sta piu' aggiornando, quindi escludo modifiche a configurazioni 
(almeno esplicite).
In sostanza, esiste una "configuration" chiamata Test che non fa altro che 
avviare il progetto dalla main class. Ha sempre funzionato, da ieri invece 
quando la seleziono, dalla console di Eclipse leggo:
Test [Java Application]  ...
come se si stesse avviando e praticamente dopo un secondo (in cui non so 
cosa succede), Eclipse mi dice:
<terminated> Test [Java Application] ...
Dal momento che mi aspettavo che apparisse una gui, direi che terminated non 
e' un buon segno. Nessun errore, crash, stacktrace anomalo. Niente.
 
Preso dalla sconforto e da cose lette frettolosamente in rete, ho rimosso 
dal build path tutte le dipendenze da altri jar (tipo log4j, hsqldb, ecc), 
ho fatto clean/rebuild per vedere se Eclipse si lamentava (come in effetti 
e' stato) e le ho nuovamente aggiunte una alla volta, sempre intermezzando 
con clean/rebuild, fino a quando non sono arrivato a 0 errori.
Stranamente in questo modo si e' messo a funzionare (?).
L'ho lasciato li' mentre mi leggevo della documentazione su un altro monitor 
e un paio di ore dopo, al primo tentativo di lancio, ha ricominciato 
nuovamente con questo comportamento.
Ho ripetuto la stessa procedura e ora mi trovo in una sorta di limbo 
intermedio, questa stessa configurazione funziona come "Run configuration" 
ma non come "Debug configuration".
 
Non ci sto piu' capendo niente e non so come uscirne, qualcuno ha esperienza 
o suggerimenti in merito?
Sto usando Eclipse Kepler su Win10 e jdk6 (!)
 
Grazie
CarMas
 
 

 CarMas
 
Domanda banale, hai provato ad aggiornare il jdk?
La versione 6 potrebbe avere problemi di compatibilità con Win 10, l'ho 
buttata lì.
 
Altra domanda puoi eseguire, le classi compilate al di fuori di eclipse?
 
Saluti Patrick

 Altra domanda puoi eseguire, le classi compilate al di fuori di eclipse?
 
Aggiungo queste informazioni per dei test che ho fatto successivamente e che 
rispondono anche alle tue domande:
- su un altro pc con win10, con lo stesso eclipse kepler (intendo proprio lo 
stesso zip scompattato) e lo stesso jdk, la configurazione si avvia sia in 
run che in debug senza alcun problema... anche se non mi stupisce perche' 
fino a non molto tempo fa funzionava perfettamente anche su questo pc 
incriminato.
- ho modificato eclipse.ini per fargli usare il jre1.8.0_121 (ma nelle 
proprieta' del progetto il target e' java 1.6 per motivi storici) ma 
analogamente non parte niente.
- le classe compilate (da eclipse) si avviano tranquillamente, per esempio 
con un bat, sia col jre6 che jre8.
- debuggando step by step il progetto, eclipse esce SENZA errori o messaggi 
particolari (solo scrivendo "terminated" nella console) quando cerco di 
istanziare una classe che estende jframe...
 
Sempre piu' misterioso...
 
Saluti
CarMas
 

 analogamente non parte niente.
 
Domanda estemporanea che non c'entra niente con il tuo problema[1]: perché il
target rimane java6?
 
Enrico
[1] in teoria ti risponderei con "prova netbeans o idea", ma è una risposta
che non c'entra nulla con il tuo problema

 il target rimane java6?
 
Di fatto perché per motivi di sicurezza era stato comprato un software che
compilava il mio jar finale in un eseguibile nativo win32 e all'epoca questo
sw funzionava con java6. In seguito non sono stati più comprati gli
aggiornamenti del prodotto e quindi si utilizza ancora uno strumento che
supporta bytecode java6.
 
Saluti
CarMas 
 

 sw funzionava con java6.
 
Posto che lo ritengo abbastanza inutile, prova a vedere JSMooth o Launch4j, che
sono FLOSS e quindi liberamente scaricabili/usabili
 
Enrico

 sono FLOSS e quindi liberamente scaricabili/usabili
 
JSmooth e Launch4j sono stati già testati e scartati appunto per motivi di 
sicurezza, come dicevo prima.
Per esempio: prendi questo "exe" che ti crea launch4j, lo rinomini in zip, 
lo scompatti e ti trovi tutti i class. Scarichi un qualunque decompiler al 
volo (tipo jd che ha una gui comoda) e ti ritrovi i sorgenti in chiaro 
diciamo al 90% simili all'originale... se non ricordo male, almeno aveva 
strippato via i commenti, ma tutto il resto era tale e quale.
 
Ma anche se fosse, questo non mi risolve il problema di eclipse :(
 
Saluti
CarMas 
 

 CarMas
 
Considerando quello che hai scritto il problema potrebbe risiedere nel 
workspace che stai usando. Dato che su un'installazione, ex novo, tutto 
funziona bene. Potresti creare un nuovo workspace, ed importare il progetto.
 
 

 progetto.
 
Sembrava una strada interessante, ho creato un nuovo workspace e ho fatto 
importare ad Eclipse il progetto dall'altro workspace (ho spuntato anche 
l'opzione per copiarlo). Poi mi sono ricreato la run configuration, l'ho 
avviato ma nuovamente si e' ripresentato questo strano fenomeno, subito 
<terminated> senza nessun apparente motivo.
 
Ho tentato anche con una manovra piu' drastica, ho cancellato la cartella 
.metadata e ho riavviato Eclipse, ho reimportato i progetti (che non vedeva 
anche se c'erano), ho ricreato tutte le configurazioni ma nessun risultato, 
il progetto proprio non si avvia. O meglio, si avvia ma viene terminato 
immediatamente.
 
Non riesco ancora a capire cosa potrebbe essersi corrotto...
 
Saluti
CarMas
 
 

 supporta bytecode java6.
 
Questa cmq è una cosa che ha portato problemi, infatti tu adesso
te li ritrovi tutti. Tra l'altro compilare il jar finale in un eseguibile
nativo win32 non è propriamente un metodo ortodosso per il deploy
di un'applicazione Java, ma un semplice ripiego.
 
(Nel caso integro con un'altra risposta nel post succ.)
 
 
 

 strippato via i commenti, ma tutto il resto era tale e quale.
 
Ma questo potrebbe succedere con qualsiasi file ".class", non
soltanto con un jar impacchettato in un exe.
 
L'unica è, prima di compilare tutta l'applicazione, offuscarla
con un offuscatore, togliendo anche tutti i commenti (che sono
la principale forma diretta di documentazione di un progetto SW).
 
A questo punto solo un programmatore Java potente potrebbe
riuscire a capire qualcosa dopo la decompilazione, ma se
si tratta un un programmatore Java potente cmq non gli converrebbe
perché gli converrebbe riscriversi il codice/le classi di
interesse facendo pure prima ;-)
 
Per i lamer e i "copia-incollatori" invece quanto sopra sarebbe
uno sbarramento invalicabile.
 
 

 riuscire a capire qualcosa dopo la decompilazione
 
Il punto sta qui, l'offuscatore non e' un metodo per prevenire la 
decompilazione ma per rendere difficile il lavoro dopo.
In sostanza si e' scelto il compilatore exe per "spostare il problema" dal 
punto di vista tecnico (ovvero, il reverse engineering era e resta cmq 
possibile) a quello commerciale (quanto tempo e risorse vuoi investire per 
riuscire a venirne a capo). Deterrente per deterrente, si spera(va) che 
fosse piu' "difficile" lavorare partendo dal nativo win32.
 
Naturalmente sono aperto a suggerimenti se l'ipotesi e' fondamentalmente 
sbagliata ed esistono approcci migliori o piu' corretti/adeguati. Sempre se 
intanto riesco a far funzionare Eclipse per poter continuare a lavorare a 
questo progetto (cambiare ide mi pare drastico attualmente)...
 
Saluti
CarMas
 

 questo progetto (cambiare ide mi pare drastico attualmente)...
 
Guardala da un altro punto di vista: l'effort che hai con altri IDE con
Eclipse te lo sogni. Da me, gli sviluppatori sono passati da Eclipse a IDEA,
ed uno per poco non piangeva dalla gioia
 
Enrico

 tecnologia che non ti porta vantaggi e che sta diventando obsoleta
 
Niente offese, sono io che ho chiesto e ascolto volentieri tutte le 
opinioni.
Recap che mi sono perso: la tecnologia obsoleta che non mi porta vantaggi a 
cui fai riferimento e' Java?
 
Saluti
CarMas
 

 cui fai riferimento e' Java?
 
Mi riferisco a Java 6, non a Java in toto. Dalla 6 ad oggi ci sono state
migliorie (sia a livello di linguaggio, sia a livello di libreria) che, a
meno di vincoli più stringenti di quello che hai citato, vale la pena
considerare. In questo modo, non dico che si sta perdendo un treno, ma
comunque si è fermi
 
Enrico


a me sembra che ti si sia incasinata la installazione di Java. Prova a disinstallare il jdk e a reinstallarlo. Anomalie con il runtime (specie con il debugging acceso) a volte ne ho avute anche io (2-3negli ultimi 10 anni) e ho sempre risolto così. questo spiegerebbe anche perché su altri computer funzioni

 questo progetto (cambiare ide mi pare drastico attualmente)...
 
Secondo me resta quanto detto prima: in un progetto closed commenti e
documentazione deve rimanere solo nelle mani degli sviluppatori (e dell'azienda,
of course... ;-) ), applicando opportune tecniche come discusso.
 
Ma... Il bello e la potenza del SW open invece è l'esatto opposto: diffondere
il codice con inclusa la documentazione permette di diffondere un SW
permettendone la manutenzione ed il miglioramento a quanti ne volessero
far parte, e garantendo un backup di tutto (codice e documentazione) esteso
a livello mondiale e quindi un backup eterno e sempre disponibile!
 
Ad ogni scelta intrapresa equivale una conseguenza...
 
 
 

 sviluppatore Java) e fare assumere al mio posto uno sviluppatore .net/c++ :(
 
Impossibile, uno sviluppatore Java (serio) E' anche uno sviluppatore C++.
Java deriva a piene mani dal C++, quindi se uno sa programmare in Java
sa programmare anche in C++.
 
 

 comunque si è fermi
 
Questo è sicuro: migliorare il codice e "upgradarlo" continuamente
all'ultima versione di Java beneficiando di tutti i miglioramenti
tecnologici è certamente consigliabile.
 
 

 sa programmare anche in C++.
 
LOL, come no.
 
Ciao Jack

 cerco di istanziare una classe che estende jframe...
 
Hai guardato anche nell'Error log? (window->show view->error log)
 
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 


Non farci caso, nel suo nick manca una 'a', dovrebbe essere 
'ciccio_the_beast'.
:-)


 :-)
 
Stiamo ancora attendendo tutti i link con i libri che hai detto di aver
scritto.
 
Data l'attesa che ci stai concedendo, devono essere dei best-seller
mondiali venduti a milioni di copie in tutto il mondo.
 
 

 anche perché su altri computer funzioni
 
Fatto anche questo, rimosso il jdk e reinstallato (nella stessa posizione, 
cosi' al riavvio Eclipse aveva il vecchio path impostato e non ha richiesto 
nessun tipo di intervento).
Purtroppo non ha sortito effetto alcuno, il progetto termina sempre sul 
costruttore di un jframe.
 
Giusto per verifica, ho creato un altro progetto ex novo per testare il 
"funzionamento" del sistema Eclipse, jdk e varie.
Ho fatto un banale hello world con un jframe e una jlabel... e' partito 
perfettamente.
Questo mi fa pensare genericamente che l'installazione di Java sia 
funzionante e altrettanto Eclipse, per cui ricondurrei il problema al 
progetto... che pero' su un altri pc si avvia, ho verificato sia un pc 
"equivalente" con win10 e Eclipse Kepler che uno piu' vecchio con xp e 
ganymede...
 
Saluti
CarMas
 
 

 Hai guardato anche nell'Error log? (window->show view->error log)
 
Certamente, nell'error log non c'e' nulla, a parte un warning su egit che 
non trova la variabile HOME settata e imposta una posizione di default (ma 
non uso git, quindi non mi interessa).
 
Saluti
CarMas
 

 progetto...
 
Due possibili soluzioni potrebbero essere:
 
 - Ricrea il progetto;
 - Crea un progetto su di un altro IDE.
 
In particolare, se il progetto usa Maven, Netbeans usa il file pom.xml come
file di progetto. Sicuramente non sono belle soluzioni, ma a questo punto non
mi viene in mente nient'altro
 
Enrico

 Impossibile, uno sviluppatore Java (serio) E' anche uno sviluppatore C++.
 
Lo sai che hai detto una grossa, grossissima idiozia, vero?
 
Enrico


Dovresti meravigliarti quando non le dice.

 ha scritto:
 

Tu hai mai studiato il C++?
 
 


Immagino che la prossima domanda sara':Tu hai mai studiato il Java?
 
Bene, a quando la tua risposta?


 Tu hai mai studiato il C++?
 
Mi ci sono approcciato abbastanza per sapere che con Java non c'entra una fava
 
Enrico

  - Crea un progetto su di un altro IDE.
 
Ho tentato anche questa strada (spinto anche dai commenti sull'obsolescenza 
in altri messaggi di questo thread).
Ho installato ex novo il jdk 1.8 update 131, ho fatto una installazione 
pulita di eclipse neon (appena scaricato dal sito ufficiale), ho creato un 
nuovo workspace in una nuova partizione, al cui interno ho creato un nuovo 
progetto copiando manualmente tutti i sorgenti (non importando il progetto, 
non con un checkout di svn). Ho aggiunto i jar nelle dipendenze e il build 
e' andato a buon fine. Ho creato la run configuration e tentato l'avvio... 
stessa solfa, starting e subito terminated.
Per caso, dovevo "pulire" qualche altra cartella di impostazioni per evitare 
che la nuova installazione di eclipse ereditasse delle impostazioni dalla 
vecchia?
 
Sono comunque abbastanza depresso, ma sono relativamente certo che sia 
successo qualcosa al pc... perche' su un altro windows10, stessi sorgenti, 
stesso eclipse (kepler), stesso jdk6 il tutto funziona. Chissa' a questo 
punto dove sta il problema.
 
Saluti
CarMas
 

Alla fine, gira e rigira, ho trovato dove nasce il problema (interagendo con 
chi ha creato la parte di database).
Ci sono due classi che si occupano di comunicare con database 
rispettivamente mysql e ms sql server, quindi nel build path del progetto 
Eclipse sono stati aggiunti i due relativi jdbc alle librerie.
Se adesso io rimuovo questi jar il progetto compila senza errori - del resto 
l'utilizzo avviene secondo il solito Class.forName("...") - e il progetto si 
avvia regolarmente!
Non ho avuto modo di testare, ma mi immagino che poi il problema si presenti 
a runtime col "no suitable driver found" nel momento di stabilire la 
connessione... non c'e' il driver jdbc registrato nel classpath...
 
Dal momento che i log dicono che questa roba e' stata creata nel 2012, non 
e' sicuramente una modifica recente e infatti il tutto funzionava fino a non 
molto tempo fa... per cui, che cosa da puo' dipendere? i jar danno fastidio 
ad Eclipse???
 
Saluti
CarMas
 

Secondo me si tratta di due problemi distinti, il problema dei driver scomparsi probabilmente nasce quando hai cancellato tutti i jar e reinseriti fino a che non hai rimosso gli errori di compilazione. I driver, essendo implementazioni di api che usi , non danno errori di compilazione se rimossi, basta un catch vuoto e non vedrai ne log ne stacktracea