PDA

View Full Version : Win98 e J2SDK..PROBLEMONE!!!


mercurio76
06-10-2003, 18:01
Salve gente, ho un grosso problema:mad:
Sto sviluppando un gestionale con collegamento ad un database access. Sto usando la JDK1.4 sia sotto winXp che sotto Win98.
Beh..sotto WinXP non ho avuto nessun problema. Con win98 invece oggi ho avuto una bella sorpresa..praticamente ad un certo punto mi dice che si verifica una eccezione non gestibile dall Virtual Machine perchè si sviluppa un errore nel codice nativo (vorrei postarvi il log ma in questo momento sto usando il pc di casa con WinXp, Win98 lo uso al lavoro).
Beh..ho fatto diverse prove su pc diversi ma sempre con win98 e mi da sempre lo stesso tipo di errore...in sostanza ci sono delle dll che rompono le palle!!:mad:
Ho provato anche a casa su duo pc diverso ma con winXp e non ho alcun problema.

Mi sapete aiutare? Cosa può essere!!:eek:
Magari domani vi posto il log di errore così potete capirci qualcosa in più..grazie e ciao.

cn73
06-10-2003, 18:34
Posta il log...

mercurio76
07-10-2003, 07:16
Questo è il log che appare nella finestrella di winzoz quando il programma va in crash:


JAVA ha provocato un errore di pagina non valida nel
modulo KERNEL32.DLL in 017f:bff87ede.
Registri:
EAX=c00309c4 CS=017f EIP=bff87ede EFLGS=00010216
EBX=0069000c SS=0187 ESP=0b02fffc EBP=0b030068
ECX=00593018 DS=0187 ESI=7fffffff FS=492f
EDX=00000000 ES=0187 EDI=0000001f GS=0000
Byte all'indirizzo CS:EIP:
53 56 57 8b 30 83 7d 10 01 8b 4e 38 89 4d f8 75
Immagine dello stack:


Questo è il log generato dall JVM:


An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x7800122D
Function=[Unknown.]
Library=(N/A)

NOTE: We are unable to locate the function name symbol for the error
just occurred. Please refer to release documentation for possible
reason and solutions.


Current Java thread:
at sun.jdbc.odbc.JdbcOdbc.colAttributesString(Native Method)
at sun.jdbc.odbc.JdbcOdbc.SQLColAttributesString(JdbcOdbc.java:2617)
at sun.jdbc.odbc.JdbcOdbcResultSetMetaData.getColAttributeString(JdbcOdbcResultSetMetaData.java:793)
at sun.jdbc.odbc.JdbcOdbcResultSetMetaData.getColumnName(JdbcOdbcResultSetMetaData.java:355)
at sun.jdbc.odbc.JdbcOdbcResultSet.findColumn(JdbcOdbcResultSet.java:1815)
- locked <02C7CB70> (a sun.jdbc.odbc.JdbcOdbcResultSet)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:395)
at levaPackage.interfaccia.gestioneComboLocalita(interfaccia.java:2134)
at levaPackage.interfaccia.textDatiLuogoNas_keyTyped(interfaccia.java:1969)
at levaPackage.interfaccia.access$6000671(interfaccia.java:52)
at levaPackage.interfaccia$7.keyTyped(interfaccia.java:506)
at java.awt.Component.processKeyEvent(Component.java:5089)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2385)
at java.awt.Component.processEvent(Component.java:4943)
at java.awt.Container.processEvent(Container.java:1566)
at java.awt.Component.dispatchEventImpl(Component.java:3639)
at java.awt.Container.dispatchEventImpl(Container.java:1623)
at java.awt.Component.dispatchEvent(Component.java:3480)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1708)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:593)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:765)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:698)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:559)
at java.awt.Component.dispatchEventImpl(Component.java:3509)
at java.awt.Container.dispatchEventImpl(Container.java:1623)
at java.awt.Window.dispatchEventImpl(Window.java:1590)
at java.awt.Component.dispatchEvent(Component.java:3480)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:197)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)

Dynamic libraries:
0x7CD70000 - 0x7CD8D000 C:\WINDOWS\SYSTEM\IMAGEHLP.DLL

Local Time = Tue Oct 07 08:03:54 2003
Elapsed Time = 86
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.4.1_04-b01 mixed mode)
#


Volevo precisare che questo errore si scatena in questa situazione: ho fatto una casella di testo per inserire il nome di una città; ho messo un listener keyTyped sulla casella e ogni volta che scrivo una lettera parte un metodo che fa una query ad un database access per elencare tutti i comuni che iniziano con le lettere digitate fino a quel momento, e la lista di tutte le città è visualizzata in una tendina di una comboBox che si aggiorna quindi ogni volta che scrivo una lettera.
Forse il fatto che faccio molte query SQL manda in crisi win98?

AIUTOOOOOOO!!!:mad:

Ciao e grazie

Molz
07-10-2003, 07:48
Mi pare ke l'eccezione sia stata lanciata da 1 metodo nativo (cioè un API della JDK) ke probabilmente nn funzionerà bene su win98.

Anke se la cosa mi sembra strana...

Usi metodi deprecati?

Cmq nn vorrei dire cavolate ma o cambi le API ke danno eccezioni o cambi la JDK

mercurio76
07-10-2003, 08:19
Non mi pare di aver usato metodi deprecati (cmq controllo meglio)..forse la jdk1.3 è più rodata sotto win98?
Posso provare a installarla invece della 1.4.

Per quanto rigurda le API come faccio a cambiarle?

Molz
07-10-2003, 08:28
X cambiare le API intendevo ke devi usarne altre ke diano lo stesso risultato (cosa ke spesso nn si può fare :( )

Cmq nn sono sicuro d qello ke t ho detto.

Anke xké rileggendo il log

An unexpected exception has been detected in native code outside the VM.

sembra ke l'errore arrivi da fuori la VM.

Se vuoi provare a installare la JDK 1.3 fallo, tentar nn nuoce, ma nn t garantisco nulla.

Cmq magari può anke essere ke nn vadano i driver del database x qella particolare qery...

Nn sono in grado d aiutarti molto.
Sorry

cn73
07-10-2003, 08:53
Problema diffuso... (http://www.google.it/search?q=An+unexpected+exception+has+been+detected+in+native+code+outside+the+VM&ie=ISO-8859-1&hl=it&btnG=Cerca+con+Google&lr=)

mercurio76
07-10-2003, 10:47
Sto guardando i post che mi hai gentilmente girato...mi sa che non è un problemino semplice. Più che altro nessuno dei post che ho letto ha trovato un soluzione :(

Evviva la portabilità di java:( :( :cry: :cry:

mercurio76
07-10-2003, 11:14
Voglio provare a scaricare la jdk1.3 solo che qui dove sono quei bastardi mi hanno bannato il sito della sun!!
Non è che sapete altri link in cui posso trovare la jdk1.3?

Speriamo bene...qui mi sa che devo cambiare il codice e usare altri metodi..va a capire qual'è il problema...non ci voleva proprio..è una gran perdota di tempo.

Intanto grazie e se qualche anima pia trova una soluzione mi faccia un fischio:cry:

Ciao;)

cn73
07-10-2003, 11:47
Prova qua:
http://sunsite.ccu.edu.tw/index.php?dir=.%2Fpub%2Flanguage%2Fjava.ccu%2FJ2SDK%2Fj2sdk-1_3_1_05

Molz
07-10-2003, 11:52
In teoria se compili usando il parametro -target puoi specificare la versione il cui compilare i files.

Prova

mercurio76
07-10-2003, 12:26
Grazie cn73..mi hai risparmiato una fatica in più..provo la jdk1.3 e poi vi fo sapere.

Ma dalla 1.3 alla 1.4 cambiano molte cose?

Ciao e garzie ancora

cn73
07-10-2003, 13:16
Prego... compila con l'opzione -deprecation in modo da capire se usi qualche metodo deprecato perchè malfunzionante.

mercurio76
07-10-2003, 14:51
Ho usato l'opzione -deprecation con la jdk1.4 e mi da 0 errorei e 0 wornings.
Ho installato la jdk1.3 e anche qui per la compilazione tuto ok..solo che quando poi lancio l'applicazione parte ma non si vede niente..c'è solo una finestra grigia :cry:

Non so proprio come fare...possibile che non ci sia un rimedio!!:mad:

cn73
07-10-2003, 15:05
Cioè con la 1.3 non ottieni errori?? Ne segnalazioni? Ma sei sicuro che in 98 le origini dati ODBC siano correttamente configurate?? E i driver?

mercurio76
07-10-2003, 16:02
Allora..con la 1.3 se lo compilo non mi da errori in fase di compilazione. Poi però quando eseguo l'applicazione con javaw praticamente non parte.
Con la 1.4 funge tutto..faccio le query tranquillamente..aggiorno campi di testo dai recordset etc etc..ma quando vado ad agire sulle comboBox per fare altre query mi salta fuori l'errore. Tra l'altro il crash non avviene subito ma dopo un certo numero di query molto aleatorio.
Però sono sicuro di aver configurato bene il database...la connessione va a buon fine e posso fare tutte le query che voglio..

Non so proprio da cosa può dipendere :muro:

cn73
07-10-2003, 16:07
Mi spiace :( Non saprei proprio...L'unica cosa che posso dirti è che usare JAVA con Access è un obrobrio, sicuramente con Oracle non avresti questi guai...
Cmq dato che con XP funge, mi viene da pensare che ci sia una qualche differenza nel settaggio dei driver nei 2 SO. Se sono identici... bhè è colpa di Microsoft che non rilascia le proprie specifiche , non certo di JAVA! :D

mercurio76
07-10-2003, 16:20
Beh...effettivamente all'inizio non volevo usare access..però lo avevo preferito per due motivi:
1- perchè ce l'avevo già :-)
2- perchè non volevo perdere molto tempo a costruire un database relazionale.

Però a questo punto sono anche disposto a cambiare dbase...Oracle fornisce una gestione visuale dei database o è come Mysql..tutto a shell di comandi?
Io volevo concentrarmi più sul codice java che sulla struttura del database.

Cmq se mi sai dire un link a cui scaricare Oracle ti sarei grato..

Intanto grazie per l'auito..ciao

p.s.
A pensarci bene sotto XP non ho mai avuto errori di questo tipo però un paio di volte usando le stesse comboBox incriminate l'applicazione si era piantata ma non è andata in crash..si è bloccata senza dare alcun tipo di errore...però è una cosa che ha fatto solo un paio di volte quando ancora stavo stendendo del codice e non era la versione definitiva.

cn73
07-10-2003, 16:51
Ehm...Oracle non si scarica, si compra :D E costa pure parecchio.
Cmq se riesci a...comprarlo :D esistono ottimi tool visuali come ad es TOAD.

mercurio76
07-10-2003, 17:30
eh eh..beh anche Access si compra...:oink:

Io intendevo...se sai qualche sitozzo di quelli molto utili (ci siamo capiti;)) da cui lo posso scaricare...

Altrimenti mi tocca accontentarmi di Access.

cn73
07-10-2003, 18:13
Il fatto è che Access è una cacatina in confronto a Oracle, utilizzato nelle maggiori aziende e Enti. Non conosco quei siti :rolleyes:

cionci
07-10-2003, 18:14
Guarda che anche MySQL ha il client visuale !!!

http://www.mysql.com/products/mysqlcc/screenshots.html
http://www.mysql.com/products/mysqlcc/index.html

mercurio76
07-10-2003, 20:14
Io cmq non credo sia colpa di access...sotto winXp ho provato il mio mitipo porgrammino e ho stressato il db come non mai ....beh..nessun problema..accesso veloce e senza problemi..

Quindi...mi sa che access bene o male me lo tengo, non voglio complicarmi la vita con altri db, però devo riuscire a risolvere sto ca**o di problema...è veramente insostenibile.

Se cmq avete altre idee..illuminatemi.

mercurio76
08-10-2003, 09:12
Morale...mi attacco e tiro forte?

Praticamente sono fermo .. non posso proseguire fino a che non risolvo sto problema...dai guru dell'informatica..fatevi venire un'ideona.

Ciao a tutti

cionci
08-10-2003, 09:19
Usare Access non limita la portabilità del tuo software solamente alle piattaforme Windows ? Che senso ha allora usare Java ?

In tal caso puoi continuare ad usare Access su Windows, ma ti consiglio di mettere MySQL come alternativa per gli altri sistemi...

cn73
08-10-2003, 09:36
Spiacente...quelli sono errori "particolari" che per risolvere occorre molto tempo e pazienza. Devi cercare e cercare ancora su Internet, usa google, altavista, yahoo... è l'unico modo, mica vorrai che lo facciamo noi per te? ;)

mercurio76
08-10-2003, 11:27
eh eh..no non pretendo tanto..anzi siete stati fin troppo disponibili..è solo che le ricerche le ho fatte..ho trovato molti casi simili se non identici al mio, ma nessuno risolto.

Per quanto riguarda l'uso di access..ok mi rendo conto che è limitante ma attualmente è l'unico strumento che ho a disposizione..cmq credo che proverò mysql.

Se passo a mysql poi posso convertire il database access in uno mysql?

Intanto grazie ancora per il supporto...a presto ciao.

cionci
08-10-2003, 11:39
Originariamente inviato da mercurio76
Se passo a mysql poi posso convertire il database access in uno mysql?
Sì...ti fai un DSN MyODBCche punta al DB MySQL vuoto che vuoi che ospiti le tue tabelle...

Apri il tuo DB Access...tasto destro su una tabella->Esporta-> seleziiona "ODBC database()" come tipo file -> seleziona il DSN creato prima ed il gioco è fatto...

Attento a come vengono convertiti i campi di tipo particolare come Data etc etc...

cionci
08-10-2003, 11:41
Originariamente inviato da mercurio76
Per quanto riguarda l'uso di access..ok mi rendo conto che è limitante ma attualmente è l'unico strumento che ho a disposizione..cmq credo che proverò mysql.

Ricordati che con la giusta progettazione di un livello di astrazione puoi utlizzare entrambi in maniera trasparente al tuo programma ;)

mercurio76
08-10-2003, 11:48
Ok..allora proverò di sicuro..grazie mille

mercurio76
08-10-2003, 11:55
Devo installare quialche tipo di driver per questo tipo di DSN? Nella lista delle sorgenti ODBC non è presente...come fo?

cionci
08-10-2003, 11:57
http://www.mysql.com/products/myodbc/index.html

mercurio76
08-10-2003, 12:03
Grazie..sei molto efficiente:cool:

Sicuramente vi romperò ancora le scatole per altri dettagli..non me ne vogliate..ciao;)

cionci
08-10-2003, 12:04
Originariamente inviato da mercurio76
Grazie..sei molto efficiente:cool:
Di niente :) E' la prima volta che mi danno dell'efficiente :D :cool:

mercurio76
08-10-2003, 17:25
Ok..ho installa mysql l'ho collegato correttamente..ho importato tutte le tabelle da access e ho connesso il nuovo db alla mia applicazine...(adesso sto lavorando sotto XP non sotto 98)..funge tutto però secondo il mio modestissimo parere le query sono + lente..po esse?:eek:

C'è una query molto stupida ma che coinvolge una gra mole di dati..secondo me access è più veloce e non di poco. I campi coinvolti nella query sono indicizzati quindi dovrebbe essere + veloce...

Domani cmq provo su 98..se va me ne frego della latenza e tiro avanti...

ciaux

mercurio76
09-10-2003, 07:25
Ho pravato Mysql sotto win98...beh che dire...

W MYSQL:) :D :D

Pensa te...non ci posso credere che Access mi craesse tutti quei problemi...beh ragazzi...grazie a tutti e buon lavoro.

Ciao

cionci
09-10-2003, 09:10
Ah...funziona ? Allora era Access...che bello...

Ha funzionato la procedura di esportazione ?

mercurio76
09-10-2003, 09:34
Si..la MicroSoz ha colpito ancora...

Si, la procedura di esportazione ha funto senza alcun problema..alla fine dei conti MySql non è poi così ostico come pensavo. L'unica cosa è che non c'è la comodità di poter visualizzare le relazioni fra le varie tabelle...ma..va benissimo così.

Inoltre in questo modo sono obbligato a usare molto di più l'SQL mentre con Access il codice era generato in automatico...è comodo ma così disimpari l'SQL.

Beh...che dire...adesso sono più tranquillo...;)

cionci
09-10-2003, 09:51
Attento alla sicurezza su MySQL :)

mercurio76
09-10-2003, 09:59
Cioè? Spiegati meglio..:eek:

cn73
09-10-2003, 10:43
Access lo si usa con Visual Basic, e non con JAVA. Come volevasi dimostrare...

cionci
09-10-2003, 12:34
Originariamente inviato da cn73
Access lo si usa con Visual Basic, e non con JAVA. Come volevasi dimostrare...
:D

Riguardo alla sicurezza devi mttere in sicurezza il db facendo in modo che solo gli utenti con permessi possano entrare in MySql. Entra sul client MySQL e scrivi:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'tuapassword';
REVOKE ALL PRIVILEGES ON *.* FROM '%'@'';
REVOKE ALL PRIVILEGES ON *.* FROM 'localhost'@'';
QUIT

Per entrare sul DB ora dovrai digitare: mysql -u root -p

Agli utenti remoti (o locali, se gira in locale) puoi dare i permessi su un DB:

GRANT ALL PRIVILEGES ON Nomedb.* TO 'NomeUtente'@'%' IDENTIFIED BY 'PasswordUtente';

NomeUtente e PasswordUtente saranno quelle che dovrai specificare nella stringa di conenssioen DSN Less...

mercurio76
09-10-2003, 14:44
Ok grazie..ci darò un'occhiata..