Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-09-2006, 14:45   #1
fefott
Junior Member
 
L'Avatar di fefott
 
Iscritto dal: Jul 2005
Messaggi: 20
[RISOLTO] percorso cercato dal jar

Avevo avuto un problema del genere anche un'altra volta ma questa volta non trovo una soluzione. Ora mi spiego...la prima volta,dopo aver creato il file jar del mio programma ho notato che non mi visualizzava le immagini perchè non trovava il percorso giusto dove pescarle. E' bastato modificare
Toolkit.getDefaultToolkit().getImage("images/GhostWest.gif");
in
Toolkit.getDefaultToolkit().getImage(LabyrinthPanel.class.getResource("images/GhostWest.gif");
e si è risolto tutto.

Ora ho lo stesso problema con la ricerca del percorso di un file e la chiamata da modificare è senz'altro questa:
private String url = "setting/scores.dat";
ObjectInputStream stream = new ObjectInputStream(new FileInputStream(url));
ma con cosa???

Ultima modifica di fefott : 22-09-2006 alle 16:52.
fefott è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 15:22   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da fefott
Ora ho lo stesso problema con la ricerca del percorso di un file e la chiamata da modificare è senz'altro questa:
private String url = "setting/scores.dat";
ObjectInputStream stream = new ObjectInputStream(new Scores.class.FileInputStream(url));
ma con cosa???
URL url = Scores.class.getResource("setting/scores.dat");

Poi dal URL, ottieni un InputStream e .... leggi.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 15:35   #3
fefott
Junior Member
 
L'Avatar di fefott
 
Iscritto dal: Jul 2005
Messaggi: 20
Ho provato ma mi da errore...saresti così gentile da scrivermi esattamente quello che vuoi dire con <<Poi dal URL, ottieni un InputStream e .... leggi.>>
Nel senso che se utilizzo ObjectInputStream stream = new ObjectInputStream(new FileInputStream(url)); url deve essere una stringa e non un URL...ma mi sa che ho franiteso quello che mi hai scritto...
fefott è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 15:55   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da fefott
Ho provato ma mi da errore...saresti così gentile da scrivermi esattamente quello che vuoi dire con <<Poi dal URL, ottieni un InputStream e .... leggi.>>
Nel senso che se utilizzo ObjectInputStream stream = new ObjectInputStream(new FileInputStream(url)); url deve essere una stringa e non un URL...ma mi sa che ho franiteso quello che mi hai scritto...
ObjectInputStream stream = new ObjectInputStream(url.openStream());
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 16:20   #5
fefott
Junior Member
 
L'Avatar di fefott
 
Iscritto dal: Jul 2005
Messaggi: 20
Perfetto..non mi da più errore ma...con questo lo leggo....
più avanti utilizzo
ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(url));
per salvare....e questo con cosa lo sostituisco?? Naturalmente non posso usare openStream perchè serve per l'Input.
fefott è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 16:26   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da fefott
per salvare....e questo con cosa lo sostituisco?? Naturalmente non posso usare openStream perchè serve per l'Input.
Allora ti conviene fare così:
Codice:
URLConnection urlConn = url.openConnection();

ObjectInputStream streamInput = new ObjectInputStream(urlConn.getInputStream());

....

ObjectOutputStream streamOutput = new ObjectOutputStream(urlConn.getOutputStream());
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 16:51   #7
fefott
Junior Member
 
L'Avatar di fefott
 
Iscritto dal: Jul 2005
Messaggi: 20
Come non detto....sembrava funzionare ed invece non mi salva i nuovi valori...o meglio, sembra salvarli ma in realtà quando poi riavvio il gioco non ci sono..in sostanz deduco che non li abbia salvati nel file. Che faccio?? In compenso legge perfettamente.
Prima che mi venga chiesto non ci sono errori nella scrittura visto che senza il jar funziona alla perfezione (cioè eseguendolo dal main)...semplicemente non trova dove salvarlo.

Ultima modifica di fefott : 22-09-2006 alle 18:46.
fefott è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 20:30   #8
TellaspallaBob
Member
 
L'Avatar di TellaspallaBob
 
Iscritto dal: Nov 2002
Messaggi: 262
Il contenuto di un jar non lo modifichi così al volo.... soprattuto se poi questo è in sola lettura (e dovrebbe visto che è aperto dalla VM per eseguire il tuo programma)

Comunque devi passare per la classi del package Jar.

Vedi questo link che forse è meglio!!!
http://java.sun.com/j2se/1.4.2/docs/...e-summary.html
TellaspallaBob è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 23:52   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da fefott
Come non detto....sembrava funzionare ed invece non mi salva i nuovi valori...o meglio, sembra salvarli ma in realtà quando poi riavvio il gioco non ci sono..in sostanz deduco che non li abbia salvati nel file. Che faccio?? In compenso legge perfettamente.
Vero. Ti ho detto tutto ma mi son dimenticato che quel setting/scores.dat ce l'hai nel jar.
Come ha detto TellaspallaBob, non è così banale aggiornare un jar e comunque non in quel modo.

Però nota che se metti quella directory 'setting' al di fuori del jar (nella stessa directory dove risiede il jar), dovrebbe (uso il condizionale perché non ho mai provato) funzionare bene lo stesso. Ovviamente quel file scores.dat non sarebbe più contenuto nel jar. Ma è meglio così, dopotutto non vedo perché tu debba metterlo nel jar.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-09-2006, 15:44   #10
fefott
Junior Member
 
L'Avatar di fefott
 
Iscritto dal: Jul 2005
Messaggi: 20
Quote:
Originariamente inviato da andbin
Però nota che se metti quella directory 'setting' al di fuori del jar (nella stessa directory dove risiede il jar), dovrebbe (uso il condizionale perché non ho mai provato) funzionare bene lo stesso. Ovviamente quel file scores.dat non sarebbe più contenuto nel jar. Ma è meglio così, dopotutto non vedo perché tu debba metterlo nel jar.
Ho provato e non funziona lo stesso...ad ogni modo mi serve che funzioni tutto dal jar poichè è l'unica cosa che devo consegnare al docente (naturalmente inserendo nel jar anche il sorgente)
fefott è offline   Rispondi citando il messaggio o parte di esso
Old 23-09-2006, 20:08   #11
TellaspallaBob
Member
 
L'Avatar di TellaspallaBob
 
Iscritto dal: Nov 2002
Messaggi: 262
Per curiosità!!! Ma cosa stai cercando di salvare nel JAR???

Se usi ObjectOutputStrem si presume che tu voglia salvare una classe...
sei sicuro di averla resa serializzabile???

E poi usa il package JAR per gestire i file jar che poi sono l'estensione naturale del dello ZIP.

Ciao.
TellaspallaBob è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2006, 17:08   #12
redcloud
Bannato
 
L'Avatar di redcloud
 
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
Mi allaccio a questo thread perchè ho un problema analogo.

Da un file jar devo accedere a un file properties (file di testo) esterno al jar stesso.

La struttura del progetto è questa:

Codice:
+ src
   |
   + package
     |
     MyClass.java

+ config
   |
   FileProperties
Nel fil MyClass.java ho un'istruzione come questa

InputStream fileProperties = new FileInputStream("config" + File.separator + "FileProperties");

e se il progetto non lo esporto in un jar, funziona perfettamente. Nel momento in cui esporto solo i sorgenti in un file jar, il file non viene più trovato nel percorso. Come mai?
redcloud è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2006, 17:52   #13
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il tuo "FileProperties" si trova in:

[directory di lavoro] + File.separator + "config" + File.separator + "FileProperties".

Forse la directory di lavoro usata quando lanci il jar non soddisfa la precondizione (che [directory di lavoro] coincida con la radice della cartella "config").
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2006, 18:08   #14
redcloud
Bannato
 
L'Avatar di redcloud
 
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
Quote:
Originariamente inviato da PGI-Bis
Il tuo "FileProperties" si trova in:

[directory di lavoro] + File.separator + "config" + File.separator + "FileProperties".
Si. Quindi genero il jar e lo metto in [directory di lavoro] e da qui lo lancio ma nisba.

Sto impazzendo!
redcloud è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2006, 18:15   #15
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Qui ci vuole il metodo della nonna .

Prima di creare l'input stream, un bel:

File file = new File("config" + File.separator + "FileProperties");
System.out.println(file.getCanonicalPath());

e vedi un po' dove lo cerca, 'sto file.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2006, 18:20   #16
redcloud
Bannato
 
L'Avatar di redcloud
 
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
Quote:
Originariamente inviato da PGI-Bis
Qui ci vuole il metodo della nonna .

Prima di creare l'input stream, un bel:

File file = new File("config" + File.separator + "FileProperties");
System.out.println(file.getCanonicalPath());

e vedi un po' dove lo cerca, 'sto file.
Lo trova in

[root]\config\FileProperties

Magari prova tu a postare un esempio banale per controllare l'esistenza di un file e io mi ricavo i relativi percorsi.


EDIT: File("nomefile") non è adatto perchè crea il file se non esiste. Bisogna provare con FileInputStream perchè genera un'eccezione se il file non esiste.

EDIT 2: incredibile, ora va! Non so che ho fatto di diverso... grazie comunque!

EDIT 3 - EPILOGO: La storia è questa. Nella prima versione scrivevo correttamente il codice che funzionava sia esportando il sorgente in jar che non esportando. Il problema è sorto da linux perchè doppiocliccando sul file jar, esso lancia automaticamente il programma (come in windows) con la differenza però che la CWD non è la stessa dove risiede il file jar (e non so ancora perchè si comporti così). Questo mi ha portato a modificare tutti i possibili percorsi invano. Ripristinando il codice orignario, ho fatto le stesse prove da windows e doppiocliccando sul file jar, il file di testo viene trovato correttamente. In pratica il problema sta nel fatto che windows e linux trattano direttamente la CWD nel caso in cui si voglia lanciare il jar doppiocliccandolo (infatti se da linux lancio il file jar da riga di comando, tutto funziona alla perfezione).

Ultima modifica di redcloud : 25-10-2006 alle 19:08.
redcloud è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2006, 19:02   #17
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
[UN PS aggiunto in testa] stavo rispondendo quando è capitato il miracolo

Mhhhh... non ho capito. Comunque taglio la testa al toro.

Io uso nei miei programmi (non che siano tantissimi ma qualcuno c'è ) un "getResource de noantri". Nel caso in questione stabilirei che la cartella "config" si debba trovare nella stessa cartella in cui si trova o il file jar che contiene le classi del programma o la radice del package a cui appartengono le classi del programma. Una cosa tipo:

+ cartella del programma/
+ Programma.jar
+ config/

Più in generale, una delle precondizioni è che il percorso di una risorsa esterna al programma sia determinabile a partire dalla cartella in cui si trova il file jar o la radice del package a cui appartengono le classi del programma. Potrebbe quindi essere anche:

+ cartella del programma/
+ bin/Programma.jar
+ config/

Premetto: è francamente inguardabile e "professionalmente" dovrei dirti di usare la cartella "user.home". Detto questo, il "getResource de noantri" che uso è fatto così:

Codice:
package it.tukano.timebox;

import java.io.*;
import java.net.*;

/** Genera percorsi assoluti "esterni" a partire da percorsi relativi */
public class GeneratorePercorsi {

	/** Genera un File il cui percorso assoluto è relativo alla cartella 
	in cui è presente la radice del package di questa classe. Ad esempio se
	il file GeneratorePercorsi si trova nella cartella:
	...\bongo\it\tukano\timebox\[GeneratorePercorsi.class]
	il file prodotto sarà:
	...\bongo\[path]
	Se il file GeneratorePercorsi.class si trovi in un archivio Pacchetto.jar:
	...\bongo\Pacchetto.jar
	il file prodotto sarà:
	...\bongo\[path]*/
	public static File generaFile(String path) {
		path = path.replace('\\', '/');
		if(!path.startsWith("/")) path = "/" + path;
		URL classPath = 
			GeneratorePercorsi.class.getResource("GeneratorePercorsi.class");
		String basePath = classPath.toString();
		if(isJar(classPath)) {
			int index = basePath.indexOf("!");
			for(int i = index; i > 0; i--) {
				if(basePath.charAt(i) == '/') {
					index = i;
					break;
				}
			}
			basePath = basePath.substring("jar:".length(), index + 1);
		} else {
			String fq = GeneratorePercorsi.class.getName().replace('.', '/');
			fq += ".class";
			basePath = basePath.substring(0, basePath.indexOf(fq) - 1);
		}
		try {
			basePath = URLDecoder.decode(basePath, "UTF-8");
		} catch(Exception ex) {
			throw new RuntimeException(ex);
		}
		basePath = removeProtocol(basePath);
		String filePath = basePath + path;
		filePath = filePath.replace("/", File.separator);
		return new File(filePath);
	}
	
	private static String removeProtocol(String path) {
		return path.substring(("file:/").length(), path.length());
	}
	
	private static boolean isJar(URL r) {
		return r.toString().indexOf("!") >= 0;
	}
}
L'orrendo è probabilmente dovuto alla mia incapacità totale di accomiatarmi all'uso delle regular expressions: se c'è una cosa che so è che non le capiro MAI .

Ti incollo, per maggiore chiarezza, un caso d'uso di quella roba lì sopra. Ho un'applicazione per cui ho stabilito una disposizione dei file così fatta:

+ radice dell'applicazione
+ Modulo.jar //contiene il GeneratorePercorsi
+ configurazione/
+ configurazione/dbdescriptor.xml

Un certo oggetto dell'applicazione ottiene il file dbdescriptor.xml con:

Codice:
	public ProduttoreBaseDati() {
		java.io.File file =
			GeneratorePercorsi.generaFile("configurazione/dbdescriptor.xml");
Sinceramente non so se e quanto consigliarti una cosa del genere. A me serve perchè non ho una cartella user.home e l'applicazione anzichè essere installata viene replicata. Insomma, è peggio di un piccione viaggiatore e, sinceramente, non ho trovato un'idea migliore di questa .
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2006, 19:33   #18
redcloud
Bannato
 
L'Avatar di redcloud
 
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
Grazie per l'impegno! La tua soluzione però è per un problema molto più complesso del mio...
redcloud è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
Realme 16: il nuovo mid-range che si isp...
DAZN lancia il piano Full Mobile a 19,99...
Samsung Galaxy S26, ormai è tutto...
Smartphone sempre più cari: super...
L'ultima puntata di Falsissimo rimossa d...
NASA Perseverance ha utilizzato percorsi...
Blue Origin sospende per almeno due anni...
Stampanti, Los Angeles verso il divieto ...
Roscosmos Amur: il razzo spaziale riutil...
Robot aspirapolvere per tutte le tasche:...
Accedere alle mail di un lavoratore lice...
Amazon Haul scatenato: migliaia di prodo...
Amazon Seconda Mano rilancia: sconto ext...
Super prezzo Amazon per ECOVACS DEEBOT T...
NVIDIA Shield TV: dieci anni di aggiorna...
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:30.


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