1

我正在使用 Flex 4 Native Process 与 Java 交互以使用 PHP 连接到远程服务器。

我尝试了在 Internet 上找到的将 Flex 与 Java 连接的示例:

柔性:

    protected function windowedApplication1_creationCompleteHandler(event: FlexEvent): void
        {
            var info:NativeProcessStartupInfo = new NativeProcessStartupInfo();
            info.executable = new File("C:/Program Files/Java/jre6/bin/java.exe");
            info.workingDirectory = File.applicationDirectory;

            var args: Vector.<String> = new Vector.<String>();
            args.push("-cp", "../bin", "scanner.Main");
            info.arguments = args;
            process = new NativeProcess();
            process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onDataOutput);
            process.start(info);
        }

        private function onDataOutput(event: ProgressEvent): void 
        {
            var message:String = process.standardOutput.readUTFBytes(process.standardOutput.bytesAvailable);
            Alert.show(message);
        }

爪哇:

public static void main(String[] args)
{
    String input;
    Scanner scanner = new Scanner(System.in);
    while (scanner.hasNext("hello|stop"))
    {
        input = scanner.next();
        if (input.equals("hello"))
        {
            System.out.println("hello flex! ... from java");
        }
        else if (input.equals("stop"))
        {
            return;
        }
    }
}

它工作完美。

但是当我尝试调用连接到远程服务器的 Java 方法,切换System.out.println("hello flex! ... from java");方法名称的行时,它会死掉(什么都不做)。

我是 Native Process 概念的新手,但在网络上研究我发现您需要将库作为项目使用的参数发送。

我需要一些关于如何做到这一点的帮助。

Java 项目使用 Http 和 JSON 库。我如何将这些添加到论点中?我还需要添加 JRE 系统库吗?

PS:如果我从 Eclipse 执行 java 方法,它可以正常工作。

谢谢你。

编辑:尝试使用 Jar 文件

    var file:File = new File("C:/Program Files/Java/jre6/");
            file = file.resolvePath("bin/javaw.exe");

            var arg:Vector.<String> = new Vector.<String>;
            arg.push("-jar");
            arg.push(File.applicationDirectory.resolvePath("prueba3.jar").nativePath);
            arg.push("-Djava.library.path=C:\\Users\\Administrador\\Desktop\\libhttp");

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

            process = new NativeProcess();          
            process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onStandardOutputData);
            process.start(npInfo);

并添加库路径,但仍然无效。

4

1 回答 1

0

您可以制作 AMFPHP 服务,并使用 AS3 直接连接到 PHP

于 2012-07-24T01:02:34.087 回答