Flex 4ネイティブプロセスを使用してJavaと対話し、PHPを使用してリモートサーバーに接続しています。
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);
}
Java:
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");
(何もしません)。
ネイティブプロセスの概念は初めてですが、Webで調べたところ、プロジェクトで使用する引数としてライブラリを送信する必要があることがわかりました。
その方法について助けが必要です。
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);
ライブラリパスを追加しましたが、それでも機能しませんでした。