从Adobe AIR本机进程运行Java程序

时间:2012-01-07 13:20:29

标签: java air adobe

我使用Adobe本机进程从我的air app运行java程序。这里代码和它工作正常。但我应该为此编写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);

    }

3 个答案:

答案 0 :(得分: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需要启动的文件。

答案 1 :(得分:0)

您可以通过查看JAVA_HOME环境变量来确定Java二进制文件的位置。我想做你正在做的事情,所以在我做更多研究之后我会发布更多信息。

答案 2 :(得分:0)

绝对路径是:

  • Mac OS:/ usr / bin / java
  • Win OS :(默认)

    • 64bit:C:\ Program Files \ Java
    • 32位:C:\ Program Files(x86)\ Java