windows - Java - Desktop.getDesktop (). browse (URI) understøttes, men åbner ikke dokument (et citrix problem?)

Indlæg af Hanne Mølgaard Plasc

Problem



(Jeg er ikke sikker på, om dette er det rigtige sted at stille dette spørgsmål. Venligst flyt til et egnet sted)


Jeg har et problem, der vises i nedenstående kode. Det virker ikke på maskinen (Windows 2008), der har CITRIX Xen App 6-. Der er ingen fejl, bare den browser bliver ikke lanceret. På mit skrivebord (en windows7-boks) virker det.


package trials;

import java.awt.*;
import java.io.File;
import java.io.IOException;


public class Launch {

    public static void main(String[] args) throws IOException {
        if (args.length < 1) {
            System.out.println("argument filepath expected");
            return;
        }

        final boolean browseSupported = Desktop.getDesktop().isSupported(Desktop.Action.BROWSE);
        if ( !browseSupported) {
            System.out.println("Browse not supported");
            return;
        }

        final String filename = args[0];
        final File file = new File(filename);
        if (file.exists()) {
            Desktop.getDesktop().browse(file.toURI());
        } else {
            System.out.println(file.getAbsolutePath() + " does not exist");
        }
    }
}


Jeg forsøgte at bruge 'open' som foreslået i følgende svar. Det virkede ikke. Problemet er indsnævret til 64-bit version af Java (Oracle 1.6.0\_25)

Bedste reference


Jeg tror, ​​at årsagen til dette symptom er den uhyre pakke, der bruger et systemopkald, hvad win2008 ikke understøtter. Men det er et tip.


Jeg synes du bør prøve en anden løsning til dette:


if (file.exists()) {
        Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + file.toURI());
    } else {
        System.out.println(file.getAbsolutePath() + " does not exist");
    }

Andre referencer 1


En anden nem mulighed for at jeg har testet på Windows XP:


org.eclipse.swt.program.Program.launch("file://" + filename);

Andre referencer 2


For at åbne en lokal fil skal du bruge Desktop().open() ikke Desktop.browse()

Andre referencer 3


Desktop.browse() lancerer den lokale webbrowser. På Windows kører browseren sikkert ud til standardskallen, som åbner filen.


Mit gæt er, at browseren på Citrix-systemet ikke kan håndtere filen korrekt og dermed ikke overføre den til skallen.


Under alle omstændigheder ser det ud til, at hvis du åbner en fil (og ikke en URL), vil du bruge Destop.open() i stedet.

Andre referencer 4


Jeg havde et lignende problem med Desktop-klassen.


Hvis filen ikke åbnes, men kaster en undtagelse, skal du prøve at redigere den. Jeg havde problemer med nogle billedfiler og windows, fordi der ikke var noget tilknyttet program men en editor.