Запуск программы на Java из собственного процесса Adobe AIR - PullRequest
3 голосов
/ 07 января 2012

Я использую нативный процесс Adobe для запуска Java-программы из моего приложения. Вот код и все отлично работает. Но я должен написать абсолютный путь к Java времени выполнения для этого:

/ System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Содержание / Главная / бен / Java.

Если пользователь установил среду выполнения Java в папке diff или имеет версию 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 голосов
/ 13 февраля 2012

Вы можете определить местонахождение двоичных файлов Java, взглянув на переменную среды JAVA_HOME.Я хотел бы сделать то же самое, что и вы, поэтому я опубликую больше после того, как проведу больше исследований.

0 голосов
/ 20 апреля 2012

Абсолютный путь:

  • Mac OS: / usr / bin / java
  • Win OS: (по умолчанию)

    • 64 бит: C: \ Program Files \ Java
    • 32 бита: C: \ Program Files (x86) \ Java
0 голосов
/ 13 февраля 2012

вместо предупреждения, вы можете открыть диалоговое окно выбора файла, используя 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...