Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-09-2009, 12:38   #1
AMD_GO
Senior Member
 
L'Avatar di AMD_GO
 
Iscritto dal: Jan 2006
Città: Prov.Cagliari
Messaggi: 1583
[Java]Problema XMLEncoder

Salve ragazzi, sto provando a salvare un oggetto in formato xml utilizzando la classe XMLEncoder, ma ho dei problemi. Ecco il codice:

{Questa è la classe Contatto}

import java.io.*;

public class Contatto implements Comparable<Contatto>, Serializable
{
private String nome;
private String cognome;
private String indirizzo;
private String telefono;
private String email;

/**
* Crea un Contatto con Nome, Cognome, Indirizzo, Telefono, Email
*/
public Contatto(String nome, String cognome, String indirizzo, String telefono, String email)
{
this.nome = nome;
this.cognome = cognome;
this.indirizzo = indirizzo;
this.telefono = telefono;
this.email = email;
}

/**
* Crea un contatto vuoto
*/
public Contatto()
{
}

più i metodi get e set per ogni variabile istanza


{Questa è la classe Program, dove viene creata un'istanza della classe Contatto che poi dovrebbe essere salvata in formato xml, cosa che invece non succede}

import java.io.*;
import java.beans.*;

public class Program
{
Contatto c1;

public Program()
{
c1 = new Contatto("Mario", "Rossi", "via", "010", "mario");
}

public void salvaOggettiXML() throws IOException
{

XMLEncoder e = new XMLEncoder(new BufferedOutputStream(new FileOutputStream("contatti.xml")));

e.writeObject(c1);
e.flush();
e.close();
}



Quando richiamo il metodo salvaOggettiXML() mi da un errore.

java.lang.ClassNotFoundException: Contatto
Continuing ...
java.lang.Exception: XMLEncoder: discarding statement XMLEncoder.writeObject(Contatto);
Continuing ...

Tuttavia viene creato il file contatti.xml, con intestazione
<?xml versio..........
ma niente di più, il file risulta vuoto....come mai? dove sbaglio?

Grazie a tutti...
__________________
MB: ASUS Prime x570-P - CPU: AMD Ryzen 9 3900x with Arctic Liquid Freezer II 240 - Memorie: G.Skill Ripjaws DDR4 2x16GB 3200 - HDs: Samsung 970 EVO plus and Crucial P2 1TB - Ali: Seasonic Focus GX-650 - Video: AMD Asus GTX770 Direct CU II - Concluso Positivamente con : M@x27, mirco2034, max x2, relativo, Mighty Max e tanti altri
AMD_GO è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2009, 14:41   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
I passaggi sono corretti ed il codice anche. A me sembra un problema di percorsi dell'ambiente di esecuzione. Forse usi un IDE che fa pasticci col classpath. Prova a compilare ed eseguire il programma da linea di comando, assicurandoti che i file class prodotti dalla compilazione si trovino nella stessa cartella da cui lanci il programma. Dovresti vedere il tutto funzionare correttamente.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2009, 17:58   #3
AMD_GO
Senior Member
 
L'Avatar di AMD_GO
 
Iscritto dal: Jan 2006
Città: Prov.Cagliari
Messaggi: 1583
Innanzitutto grazie per avermi risposto....eh si, penso anche io che il codice sia corretto. ho anche provato ad definire un costruttore vuoto creare una istanza della classe Contatto col costruttore vuoto, ma niente....ora provo da linea di comando. Sarà dovuto al fatto che uso BlueJ?
__________________
MB: ASUS Prime x570-P - CPU: AMD Ryzen 9 3900x with Arctic Liquid Freezer II 240 - Memorie: G.Skill Ripjaws DDR4 2x16GB 3200 - HDs: Samsung 970 EVO plus and Crucial P2 1TB - Ali: Seasonic Focus GX-650 - Video: AMD Asus GTX770 Direct CU II - Concluso Positivamente con : M@x27, mirco2034, max x2, relativo, Mighty Max e tanti altri
AMD_GO è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2009, 18:03   #4
AMD_GO
Senior Member
 
L'Avatar di AMD_GO
 
Iscritto dal: Jan 2006
Città: Prov.Cagliari
Messaggi: 1583
Infatti questo classNotFound non capisco perchè....
__________________
MB: ASUS Prime x570-P - CPU: AMD Ryzen 9 3900x with Arctic Liquid Freezer II 240 - Memorie: G.Skill Ripjaws DDR4 2x16GB 3200 - HDs: Samsung 970 EVO plus and Crucial P2 1TB - Ali: Seasonic Focus GX-650 - Video: AMD Asus GTX770 Direct CU II - Concluso Positivamente con : M@x27, mirco2034, max x2, relativo, Mighty Max e tanti altri
AMD_GO è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2009, 18:34   #5
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
E' un messaggio strano perchè se non viene rilasciato in compilazione significa che in quel momento l'ambiente java aveva a disposizione tutti i file class necessari a rendere il programma eseguibile.

Poi in esecuzione XMLEncoder dice che gliene manca uno, quello corrispondente alla classe Contatto.

Quel che non va è il fatto che se il programma non genera una ClassNotFoundException quando viene caricato significa che la classe Contatto c'è. Dopodichè arriva XMLEncoder, cerca di caricare quella classe che la JVM ha trovato (per scrivere l'oggetto genera una nuova istanza di Contatto) ma non la trova.

Forse BueJ pasticcia con il provider che si occupa di stabilire come serializzare i bean?

Per provare a vedere se è così, compila ed esegui il programma senza usare l'IDE.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2009, 19:01   #6
AMD_GO
Senior Member
 
L'Avatar di AMD_GO
 
Iscritto dal: Jan 2006
Città: Prov.Cagliari
Messaggi: 1583
Perfetto. Ho provato a compilare a riga di comando e lanciare......tutto funziona. Quindi a questo punto penso sia proprio BlueJ che pasticcia, proprio come hai detto te.....Grazie mille!!!
Altra cosa, sempre per rimanere in tema.....Col codice da me postato in precedenza viene creato un file contatti.xml così come segue:

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0" class="java.beans.XMLDecoder">
<object class="Contatto"/>
</java>


Ecco, se io volessi qualcosa del genere:

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0" class="java.beans.XMLDecoder">
<object class="Contatto"/>
<Nome>Mario</Nome>
<Cognome>Rossi</Cognome>
<Indirizzo>via</Indirizzo>
<Telefono>111</Telefono>
<Email>[email protected]</Email>
</java>

come devo agire?


EDIT: aaaaaaaaaaa!!!!!!!!!!! l'indentazione!!!!!!
__________________
MB: ASUS Prime x570-P - CPU: AMD Ryzen 9 3900x with Arctic Liquid Freezer II 240 - Memorie: G.Skill Ripjaws DDR4 2x16GB 3200 - HDs: Samsung 970 EVO plus and Crucial P2 1TB - Ali: Seasonic Focus GX-650 - Video: AMD Asus GTX770 Direct CU II - Concluso Positivamente con : M@x27, mirco2034, max x2, relativo, Mighty Max e tanti altri

Ultima modifica di AMD_GO : 27-09-2009 alle 19:04.
AMD_GO è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2009, 19:09   #7
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Sembra che c1 non abbia proprietà salvabili. Dovrebbe saltarti fuori una cosa come questa:

Prova a scrivere nel main (pseudo codice):

Contatto c = new Contatto("Mario", "Rossi", "via", "010", "mario");
XMLEncoder encoder = new XMLEncoder(eccetera eccetera)
encoder.writeObject(c);
eccetera

Altrimenti verifica con un debugger che c1 abbia effettivamente delle proprietà assegnate al momento dell'invocazione di writeObject.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2009, 19:13   #8
AMD_GO
Senior Member
 
L'Avatar di AMD_GO
 
Iscritto dal: Jan 2006
Città: Prov.Cagliari
Messaggi: 1583
Verissimo..... stavo pasticciando io con gli oggetti. Gli stavo passando un oggetto costruito con un costruttore vuoto ! ora tutto funziona....Grazie mille ancora!!!!

ora il risultato è questo

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0" class="java.beans.XMLDecoder">
<object class="Contatto">
<void property="cognome">
<string>Rossi</string>
</void>
<void property="email">
<string>[email protected]</string>
</void>
<void property="indirizzo">
<string>Via</string>
</void>
<void property="nome">
<string>Giovanni</string>
</void>
<void property="telefono">
<string>190</string>
</void>
</object>
</java>


un po' pasticciato, ora controllo se si può mettere meglio....
__________________
MB: ASUS Prime x570-P - CPU: AMD Ryzen 9 3900x with Arctic Liquid Freezer II 240 - Memorie: G.Skill Ripjaws DDR4 2x16GB 3200 - HDs: Samsung 970 EVO plus and Crucial P2 1TB - Ali: Seasonic Focus GX-650 - Video: AMD Asus GTX770 Direct CU II - Concluso Positivamente con : M@x27, mirco2034, max x2, relativo, Mighty Max e tanti altri
AMD_GO è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Apple sta per lanciare un nuovo monitor:...
Mondraker Crafty Unlimited Gulf Edition,...
Amazon, altro rilancio per Haul: sconto ...
Chiusi in un bunker per soldi: Fallout d...
Yakuza Kiwami 3 and Dark Ties avrà...
Iran, il regime prolunga il blocco di in...
Lucasfilm cambia guida: cosa succede a S...
Roborock lancia in Italia F25 ACE Pro: c...
Auto elettriche, a Busto Arsizio stop al...
Smartphone potenti sotto i 300€: ecco i ...
Google rassicura: ChromeOS continuer&agr...
Merge Labs: esce allo scoperto la societ...
Blocco note su Windows 11 è sempre più c...
Cybersecurity: la vera leva strategica p...
Huawei annuncia tre prodotti: uno smartp...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:02.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v