Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [JAVA] Cambiare variabile d'ambiente PATH

    Ciao a tutti scusatemi per questo post ma chiedo aiuto perchè dovrei realizzare un programma in Java che mi permetta di vedere le variabili d'ambiente del sistema e modificarle (specialmente la variabile PATH indipendentemente dal sistema operativo). Sono una vera schiappa in Java e non conosco pressochè nulla anche se so fare tutto ciò con il C.
    Il mio problema e che C va compilato per ogni sistema e per questo motivo chiedevo aiuto per farlo in Java.
    Mi sapeste elencare le funzioni che mi servono e come usarle??
    Grazie mille a tutti! Mi serve davvero molto.
    Zorgatone.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    che intendi per modificare variabili d'ambiante??


    comunque inizia a dare un'occhiata qui

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,280

    Re: [JAVA] Cambiare variabile d'ambiente PATH

    Originariamente inviato da Zorgatone
    Ciao a tutti scusatemi per questo post ma chiedo aiuto perchè dovrei realizzare un programma in Java che mi permetta di vedere le variabili d'ambiente del sistema e modificarle (specialmente la variabile PATH indipendentemente dal sistema operativo). Sono una vera schiappa in Java e non conosco pressochè nulla anche se so fare tutto ciò con il C.
    Il mio problema e che C va compilato per ogni sistema e per questo motivo chiedevo aiuto per farlo in Java.
    No, allora facciamo una premessa. In generale un processo ha un insieme di variabili di ambiente. A livello di codice nativo c'è sicuramente il modo di inserire/modificare/eliminare variabili di ambiente in quel processo. E questo insieme di variabili di ambiente può essere poi "ereditato" SOLO dai processi "figli".

    Quando lanci una applicazione Java, il processo che esegue la JVM ha di certo ovviamente delle variabili di ambiente (ereditate dal processo che ha lanciato la JVM ... potrebbe essere la shell di sistema o altro). Ma da codice Java NON puoi cambiare le variabili di ambiente del processo della JVM. Da Java potresti lanciare un nuovo processo (exec() di Runtime o ProcessBuilder) passando un insieme di variabili di ambiente modificato.

    E comunque (questo vale anche per applicazioni "native"), un processo NON può cambiare le variabili di ambiente che ha il processo "padre".

    Ti è più chiaro ora? Spero di sì.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    Re: Re: [JAVA] Cambiare variabile d'ambiente PATH

    Originariamente inviato da andbin
    E comunque (questo vale anche per applicazioni "native"), un processo NON può cambiare le variabili di ambiente che ha il processo "padre".

    Ti è più chiaro ora? Spero di sì.
    In C potresti farlo visto che hai setevn e putenv libreria stdlib.h

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,280

    Re: Re: Re: [JAVA] Cambiare variabile d'ambiente PATH

    Originariamente inviato da valia
    In C potresti farlo visto che hai setevn e putenv libreria stdlib.h
    Sì lo so ma questo cambia solo le variabili di ambiente in quel processo in esecuzione. Non cambia le variabili di ambiente del processo "padre" o quelle del "sistema" (per inciso, quelle che su Windows si vedono nel pannello delle variabili di ambiente che si raggiunge dalle proprietà del sistema).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6

    Re: Re: Re: Re: [JAVA] Cambiare variabile d'ambiente PATH

    Originariamente inviato da andbin
    Sì lo so ma questo cambia solo le variabili di ambiente in quel processo in esecuzione. Non cambia le variabili di ambiente del processo "padre" o quelle del "sistema" (per inciso, quelle che su Windows si vedono nel pannello delle variabili di ambiente che si raggiunge dalle proprietà del sistema).
    Volevo modificare proprio quelle del sistema, per esempio per impostare il PATH in cui il sistema cerca gli eseguibili tipo quando digiti "gcc nomeprogramma.linguaggio -o nomeseguibile" cerca i files di GCC... NOn è proprio il mio caso. Quello che intendevo fare era un programma in Java che riconosce il sistema operativo in uso e di conseguenza mi copia nella cartella applicazioni gli eseguibili di altri linguaggi relativi a quel sistema, e successivamente setti la variabile "PATH" (del sistema sempre) della cartella (ad es. "C:/MioProgramma/"), così che si possa usarli da console (in questo caso non digiteresti + "C:/MioProgramma/mioprogramma.exe" ma solo più "mioprogramma").
    Grazie lo stesso, mi sarebbe piaciuto non dover ridistribuire gli eseguibili (tutti files leggeri, piccoli programmi) per ogni sistema ma fornire un archivio complessivo di: Bytecode Java e cartelle con gli eseguibili divise in: Win32, Win64, MacOS, Linux.

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,280

    Re: Re: Re: Re: Re: [JAVA] Cambiare variabile d'ambiente PATH

    Originariamente inviato da Zorgatone
    Quello che intendevo fare era un programma in Java che riconosce il sistema operativo in uso
    E per questo non servono le variabili di ambiente! Basta usare in Java una o più "system property" (vedi getProperty/getProperties di java.lang.System).

    Originariamente inviato da Zorgatone
    e successivamente setti la variabile "PATH" (del sistema sempre) della cartella (ad es. "C:/MioProgramma/"), così che si possa usarli da console (in questo caso non digiteresti + "C:/MioProgramma/mioprogramma.exe" ma solo più "mioprogramma").
    Ma hai compreso quanto ho detto prima? Vuoi un esempio più esplicativo?

    Scenario: sei su Windows e hai una console aperta con un "prompt dei comandi". Sei praticamente in una "shell" che è ovviamente un processo.

    Setti PATH con es.:

    set PATH=C:\Programmi\Java\jre6\bin;C:\AltraApp

    poi sempre in quella shell invochi una applicazione Java con es. (supponendo classpath, ecc.. ok):

    java MiaApplicazione

    La shell (processo padre) lancia e avvia la JVM (processo figlio) che esegue la tua applicazione Java. Questa tua applicazione può fare tutto quello che gli pare, tecnicamente (non in Java "puro") anche cambiare le variabili di ambiente del processo della JVM e pure lanciare altre applicazioni passando un "environment" differente (variabili di ambiente modificate o in più o in meno).
    Quello che la tua applicazione Java NON può fare è cambiare la variabile PATH che è nel processo della shell. Quando la tua applicazione Java termina e tu hai di nuovo disponibile il prompt dei comandi, se fai

    echo %PATH%

    otterrai sempre quello che hai impostato sopra. La tua applicazione Java NON può cambiarlo! Perché è un processo figlio.
    Se la tua applicazione Java lanciasse come processo "figlio" una "shell" allora sì, potrebbe passargli il PATH che gli pare.

    Ora è tutto chiaro? Spero.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.