La nostra applicazione Java in-house lancia vari URL http in vari momenti, inclusi URL per pagine Web, documenti MS Word, documenti MS Excel, file PDF ecc.Adobe Acrobat intercetta ogni URL dalla chiamata a BasicService.showDocument() in java
Su oltre 50 macchine l'avvio dell'URL funziona correttamente e l'applicazione corretta apre correttamente la pagina o il documento. Tuttavia, su una macchina fastidioso Adobe Acrobat sta tentando di aprire ogni URL (indipendentemente dal fatto che la destinazione è un pdf o meno), e in mancanza (anche su documenti pdf) con:
C'è stato un errore l'apertura di questo documento, . Il nome del file, il nome della directory o la sintassi dell'etichetta del volume non sono corretti.
Il codice per lanciare gli URL è:
URL url = new URL("http://www.example.com");
BasicService bs = (BasicService)ServiceManager.lookup("javax.jnlp.BasicService");
boolean worked = bs.showDocument(url);
La variabile worked
è vero dopo la chiamata.
Altri punti che possono essere utili:
- L'applicazione viene eseguita all'interno di Java Web Start.
- Un applet in esecuzione sulla stessa macchina è in grado di aprire gli URL correttamente utilizzando
AppletContext.showDocument()
- inserimento di un URL nella Windows "Esegui ..." dialogo lancia l'URL corretto.
- Abbiamo reinstallato sia JRE che Adobe Acrobat.
Grazie in anticipo per qualsiasi consiglio/aiuto che puoi offrire.
Aggiornamento:
Il seguente codice di debug produce il seguente output:
String[] services = ServiceManager.getServiceNames();
if(services!=null) {
for(int i=0;i<services.length;i++) {
System.out.println("Available Service: "+services[i]);
}
}
BasicService bs = (BasicService)ServiceManager.lookup("javax.jnlp.BasicService");
System.out.println(url);
System.out.println(bs);
System.out.println("bs.getCodeBase():"+bs.getCodeBase());
System.out.println("bs.isOffline():"+bs.isOffline());
System.out.println("bs.isWebBrowserSupported():"+bs.isWebBrowserSupported());
boolean worked = bs.showDocument(url);
System.out.println("bs.showDocument:"+worked);
} catch(UnavailableServiceException ue) {
System.out.println("UnavailableServiceException thrown");
ue.printStackTrace();
}
Available Service: javax.jnlp.BasicService
Available Service: javax.jnlp.FileOpenService
Available Service: javax.jnlp.FileSaveService
Available Service: javax.jnlp.DownloadService
Available Service: javax.jnlp.ClipboardService
Available Service: javax.jnlp.PersistenceService
Available Service: javax.jnlp.PrintService
Available Service: javax.jnlp.ExtendedService
Available Service: javax.jnlp.SingleInstanceService
http://<snip>
[email protected]
bs.getCodeBase():http://xxx.xxxxxx.com:8080/
bs.isOffline():false
bs.isWebBrowserSupported():true
bs.showDocument:true
Grazie. Ho modificato il mio post originale sopra ... sembra che sia presente FileOpenService ...? – cagcowboy