2011-01-24 11 views
5

当社の社内Javaアプリケーションは、Webページ、MS Word文書、MS Excel文書、PDFファイルなどのURLを含むさまざまな時点でさまざまなhttp URLを起動します。JavaのBasicService.showDocument()への呼び出しからすべてのURLを傍受するAdobe Acrobat

50以上のマシンでは、URLの起動がうまく機能し、正しいアプリケーションが特定のページ/ドキュメントを正しく開きます。ただし、Adobe Acrobatは(関係なく、ターゲットがPDFであるかどうかの)すべてのURLを開こうとすると、失敗(でもPDF文書上)とされる1台の厄介なマシン上:

この文書を開くときにエラーが発生しました。ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません。

URLを起動するためのコードは次のとおりです。

URL url = new URL("http://www.example.com"); 
BasicService bs = (BasicService)ServiceManager.lookup("javax.jnlp.BasicService"); 
boolean worked = bs.showDocument(url); 

worked変数は、コールの後に真です。役に立つかもしれ

その他の見所:

  • アプリケーションは、Java Webスタート内で実行されます。
  • 同じマシン上で動作するアプレットは、URLを正しく開くことができますAppletContext.showDocument()
  • Windowsの[実行...]ダイアログにURLを正しく入力すると、URLが正しく起動されます。
  • JREとAdobe Acrobatの両方を再インストールしました。

ご提供いただけるアドバイスやアドバイスをお寄せいただきありがとうございます。

更新:

次のデバッグコードは、次の出力を生成します。

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 

答えて

1

あなたはまだこの問題を解決しましたか?そうでない場合は、次のことを試すことができますか?

FileOpenService fos = (FileOpenService)ServiceManager.lookup("javax.jnlp.FileOpenService"); 
+0

ありがとうございます。私は上記のオリジナルの投稿を編集しました... FileOpenServiceが存在するかのように見えます...? – cagcowboy

関連する問題