我正在使用 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);
并添加库路径,但仍然无效。