Creare collegamenti (shortcuts) con java

di il
12 risposte

Creare collegamenti (shortcuts) con java

Ho trovato su stackoverflow dei codici per farlo, ma bisogna scaricare una libreria e questa libreria non la trovo da nessuna parte... Soluzioni? Grazie mille... Altrimenti se non si riesce in java si riesce in qualche altro modo? Grazie.

12 Risposte

  • Re: Creare collegamenti (shortcuts) con java

    p0ll0_ ha scritto:


    Ho trovato su stackoverflow dei codici per farlo, ma bisogna scaricare una libreria e questa libreria non la trovo da nessuna parte... Soluzioni? Grazie mille... Altrimenti se non si riesce in java si riesce in qualche altro modo? Grazie.
    Se non dici nemmeno qual è questa libreria.......
  • Re: Creare collegamenti (shortcuts) con java

    Io ho trovato una discussione su SO che punta dritta a questa libreria:

    https://github.com/DmitriiShamrikov/mslink

    (non l'ho provata, ma sembra fare quel che chiedi, per Windows).
  • Re: Creare collegamenti (shortcuts) con java

    SpiritoLibero ha scritto:


    Io ho trovato una discussione su SO che punta dritta a questa libreria:

    https://github.com/DmitriiShamrikov/mslink

    (non l'ho provata, ma sembra fare quel che chiedi, per Windows).
    Grazie ! Credo fosse la stessa libreria, ma adesso ho trovato il link per scaricarla.
    Ho scaricato la libreria e l'ho importata, poi ho scritto questo codice
          try {
                String link1 = "C:\\Users\\admin\\Desktop\\target\\file originale.txt";
                String link2 = "C:\\Users\\admin\\Desktop\\target\\file originale.lnk";
    
                ShellLink sl = ShellLink.createLink(link1);
                sl.getHeader().getLinkFlags().setAllowLinkToLink();
                sl.saveTo(link2);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    Ho provato anche a scambiare link1 con link2, in entrambi i casi mi viene dato questo errore:
    Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedClassVersionError: mslinks/ShellLink has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 52.0

    Non so che fare...
  • Re: Creare collegamenti (shortcuts) con java

    Alka ha scritto:


    p0ll0_ ha scritto:


    Ho trovato su stackoverflow dei codici per farlo, ma bisogna scaricare una libreria e questa libreria non la trovo da nessuna parte... Soluzioni? Grazie mille... Altrimenti se non si riesce in java si riesce in qualche altro modo? Grazie.
    Se non dici nemmeno qual è questa libreria.......
    Lo hai detto?
  • Re: Creare collegamenti (shortcuts) con java

    Senza usare librerie esterne puoi vedere quest'esempio in c# https://stackoverflow.com/questions/4897655/create-a-shortcut-on-desktop
  • Re: Creare collegamenti (shortcuts) con java

    Questo però è C#, io non so nulla di quello...

    Adesso ho provato questo

    trovato qui https://docs.oracle.com/javase/tutorial/essential/io/links.html


      try {
    
                Path newLink = Paths.get("C:\\Users\\admin\\Desktop\\target\\boh.lnk");
                Path target = Paths.get("C:\\Users\\admin\\Desktop\\target\\file originale.txt");
                try {
                    Files.createSymbolicLink(newLink, target);
                } catch (IOException x) {
                    System.err.println(x);
                } catch (UnsupportedOperationException x) {
                    // Some file systems do not support symbolic links.
                    System.err.println(x);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

    ma mi da questo errore java.nio.file.FileSystemException: C:\Users\admin\Desktop\target\boh.lnk: Il privilegio richiesto non appartiene al client.


    Ho provato questo codice

      try {
                Path newLink = Paths.get("C:\\Users\\admin\\Desktop\\target\\boh.lnk");
                Path existingFile = Paths.get("C:\\Users\\admin\\Desktop\\target\\file originale.txt");
                try {
                    Files.createLink(newLink, existingFile);
                } catch (IOException x) {
                    System.err.println(x);
                } catch (UnsupportedOperationException x) {
                    // Some file systems do not
                    // support adding an existing
                    // file to a directory.
                    System.err.println(x);
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }


    E finalmente crea un collegamento, ma quando lo apro non succede nulla.


    Ho provato questo (non so più nemmeno io che cosa sto facendo)
        Path link = Paths.get("C:\\Users\\admin\\Desktop\\target\\file originale.txt");
            try {
                System.out.format("Target of link"
                        + " '%s' is '%s'%n", link,
                        Files.readSymbolicLink(link));
            } catch (IOException x) {
                System.err.println(x);
            }


    Mi viene dato questo errore.

    java.nio.file.NotLinkException: Il file o la directory non costituisce un reparse point.
  • Re: Creare collegamenti (shortcuts) con java

    Sintatticamente è "molto" simile ,se sei abituato a leggere e scrivere codice java dovresti , a mio avviso, capire anche quelle poche righe di c# ,se ti può essere utile "visual studio community 2022" è gratuito e liberamente scaricabile
  • Re: Creare collegamenti (shortcuts) con java

    Ma non riuscite nemmeno con la shell?
  • Re: Creare collegamenti (shortcuts) con java

    gian82 ha scritto:


    Sintatticamente è "molto" simile ,se sei abituato a leggere e scrivere codice java dovresti , a mio avviso, capire anche quelle poche righe di c# ,se ti può essere utile "visual studio community 2022" è gratuito e liberamente scaricabile
    Sintatticamente è simile, ma alcune "regole" sintattiche e di funzionamento sono completamente diverse, specialmente quando si deve "interoperare" nativamente con il sistema operativo, e soprattutto lo sono le librerie di base con cui si lavora.

    p0ll0_ ha scritto:


    Ma non riuscite nemmeno con la shell?
    Ma tu hai provato a cercare qualche soluzione per farlo con la shell?

    Io ad esempio ho trovato questo script in Powershell.

    Per lanciare un programma esterno puoi prendere spunto da questo esempio (anche se, non essendo esperto di Java, non saprei garantire se è aggiornato o sostituibile con forme migliori).
  • Re: Creare collegamenti (shortcuts) con java

    Purtroppo non conosco la shell... Provo a chiedere al mio collega, lui la conosce.
  • Re: Creare collegamenti (shortcuts) con java

    Ciao

    Ho provato questo codice (ma su Linux) e funziona:
    
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.Files;
    import java.io.IOException;
    
    public class Main {
      public static void main(String[] args) {
         Path newLink = Paths.get("/home/xxx/linkDaCreare");
         Path target = Paths.get("/home/xxx/fileOriginale");
         try {
             Files.createSymbolicLink(newLink, target);
         } catch (IOException x) {
             System.err.println(x);
         } catch (UnsupportedOperationException x) {
             // Some file systems do not support symbolic links.
             System.err.println(x);
         }
    
      }
    }
    
    Occhio però al tipo di link: questo è uno simbolico (o se vuoi soft), mentre c'è anche l'opzione hard link.
    Alcuni sistemi non supportano il soft link
  • Re: Creare collegamenti (shortcuts) con java

    Ce l'ho fatta! Ho provato a scaricare un'altra versione 0.0.2 e con quella ho messo questo codice e funziona:
    
                String STARTUP_PATH = "/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup";
                File file = new File(System.getProperty("user.home") + STARTUP_PATH + "/programma.lnk");
    
                if (!file.exists()) {
                    try {
                        ShellLink.createLink("/programma.exe", file.getAbsolutePath());
                    } catch (IOException e) {
                 
                        e.printStackTrace();
                    }
                }
Devi accedere o registrarti per scrivere nel forum
12 risposte