2012-01-07 4 views
3

私はAirアプリケーションからJavaプログラムを実行するためにAdobeネイティブプロセスを使用しました。ここでコードとそれは正常に動作します。しかし、私はそれのためのJavaランタイムへの絶対パスを記述する必要があります:Adob​​e AIRのネイティブプロセスからJavaプログラムを実行する

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java。

ユーザが差分フォルダにJavaランタイムをインストールしている場合、または差分バージョンがある場合、このコードは機能しません。どのように私はJavaがインストールされているか、または多分空気アプリケーションからJavaアプリケーションを実行する別の正しい方法が検出されますか?私は、ターミナルコマンドラインからjavaライブラリを実行する場合、私はちょうど "java -jar pdfbox-app-1.6.0.jar"などを書くことができ、それはうまく動作します。むしろ警告をポップアップより

private function convertPdf2Txt():void{ 
     var arg:Vector.<String> = new Vector.<String>; 
     arg.push("-jar"); 
     arg.push(File.applicationDirectory.resolvePath("pdfbox-app-1.6.0.jar").nativePath); 
     arg.push("ExtractText"); 
     arg.push("-force"); 
     arg.push(File.applicationStorageDirectory.resolvePath("Data/1.pdf").nativePath); 
     arg.push(File.applicationStorageDirectory.resolvePath("Data/1.txt").nativePath); 

     var fjava:File = new File("/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java"); 
     if (fjava.exists==false){ 
      Alert.show("Can't find Java Runtime in default folder.","Idea Rover",mx.controls.Alert.OK, null,null,imgInfo); 
      return; 
     } 

     var npInfo:NativeProcessStartupInfo; 
     npInfo = new NativeProcessStartupInfo(); 
     npInfo.executable = fjava; 
     npInfo.arguments = arg; 

     var nativeProcess:NativeProcess; 
     nativeProcess = new NativeProcess(); 
     nativeProcess.addEventListener(NativeProcessExitEvent.EXIT,onNativeProcessExit); 
     nativeProcess.start(npInfo); 

    } 
+0

あなたはこれに対する解決策を今までに見つけましたか? – ericsoco

答えて

0

絶対パスは次のとおりです。

  • マックOS:は/ usr/binに/ javaの
  • 勝利OS:(デフォルト)

    • 64:C:\プログラムファイル\のJava
    • 32ビット:C:¥Program Files(x86)¥Java
0

、あなたはFile.browseForOpen()を使用して、ファイル選択ダイアログを開くことができます。必要なファイルは、Event.SELECTハ​​ンドラーによって渡されたイベントに含まれています。このフローは、私が使用したアプリケーションでは他のアプリケーションにアクセスするための標準的なようですが、実行可能ファイルを見つける場所が不明です。

var npInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
// setup npInfo, nativeProcess... 

var fjava:File = new File("/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java"); 
if (!fjava.exists) { 
    fjava.addEventListener(Event.SELECT, onFileSelected); 
    fjava.browseForOpen("Where is Java located?"); 
} 

private function onFileSelected (evt:Event) :void { 
    npInfo.executable = evt.target; 
    nativeProcess.start(npInfo); 
    fjava.removeEventListener(Event.SELECT, onFileSelected); 
} 

もちろん、同じロジックを使用して、Javaが起動する必要があるファイルを見つけることもできます。

0

JAVA_HOME環境変数を調べることで、Javaバイナリの場所を特定できます。私はあなたがしているのと同じことをしたいので、私はより多くの研究をした後にもっと投稿します。

+0

試しましたか? –

+0

いいえ、別のテクノロジーに切り替えることになりました –

関連する問題