2012-01-07 38 views
3

我已經使用Adobe本機進程從我的air應用程序運行java程序。這裏的代碼和它工作正常。但我應該寫絕對路徑到java運行庫:從Adobe AIR的本機進程運行Java程序

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

如果用戶在diff文件夾中安裝了Java運行時,或者有diff版本,那麼這段代碼將不起作用。我如何檢測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 2012-02-21 04:57:23

回答

0

絕對路徑是:

  • 的Mac OS:在/ usr/bin中/ JAVA
  • 贏OS:(默認)

    • 64位:C:\ Program Files文件\的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

你試過了嗎? – 2012-12-19 10:09:12

+0

不,我結束了切換到不同的技術 – 2012-12-22 20:46:02

相關問題