2012-12-12 5 views
8

VirtualBoxゲストマシンにプログラム(例:Firefox)を起動するJavaプログラムを書いてみたいと思います。ホストはWindowsでゲストはUbuntuです。 SDKのドキュメントによれば、これを行うことが可能でなければなりません。ここで私はドキュメントで見てきたものに基づいてJavaで私の試みは、(これはVMが稼働していると仮定し)です:VirtualBox:SDK APIを使用してゲストでプログラムを起動しますか?

String machineName = "MyMachine"; 
String url = "http://localhost:18083"; 
String user = ""; 
String passwd = ""; 

VirtualBoxManager mgr = VirtualBoxManager.createInstance(null); 
mgr.connect(url, user, passwd); 
IVirtualBox vbox = mgr.getVBox(); 
System.out.println("Running VirtualBox version " + vbox.getVersion()); 

IMachine machine = vbox.findMachine(machineName); 
ISession session = mgr.getSessionObject(); 
machine.lockMachine(session, LockType.Shared); 
IConsole console = session.getConsole(); 
IGuest guest = console.getGuest(); 

IGuestSession guestSession = guest.createSession("bob","password", "", ""); 
guestSession.processCreate("/usr/bin/firefox", null, null, null, 0L); 

session.unlockMachine(); 

私はこれを実行すると、私が手:

Exception in thread "main" org.virtualbox_4_2.VBoxException: VirtualBox error: The session is not locked (session state: Unlocked) (0x8000FFFF) 
at org.virtualbox_4_2.ISession.getConsole(ISession.java:145) 
at Test1.main(Test1.java:27) 

私はロックとセッションでさまざまなオプションを試しましたが、常にエラーが発生します。 LockTypeをWriteに設定すると、「セッションにマシンを割り当てることができませんでした」というエラーが表示されます。

これを行った人はいますか?任意のJava VirtualBoxチュートリアルがオンラインでありますか?私はGoogleと一緒に見つけることができません。

アドバイスありがとうございます。

+0

のようなものである必要がありますが、修正@TrentCoderを見つけましたか? – aandis

答えて

0

また、SDKを使用して行う方法もわかりません。しかし、あなたはに仮想マシンにSSHを介して賞賛を送ろうとしましたか? Sueでは、ネットワークとそのすべてをセットアップする必要がありますが、VirtualBox SDKのドキュメントがないため、アーカイブするのが複雑になるため、良い方法です。

0

ゲストセッションが開始されるまでお待ちしていますか?あなたのケースでは、これは、この

guestSession = guest.CreateSession(....

guestSession.waitFor(1L、0L)

+0

'1L'ではなく' GuestSessionWaitForFlag_Start'を意味しますか? –

+0

はい、私のアプリケーションがゲストセッションが開始されるのを待っているときに、同じジョブとプロセスが開始されます。waitFor(またはwaitForArray)おそらく、別のFlagsを試す必要があります。たとえば、フラグGuestSessionWaitForFlag_Statusセッション状態が変更されるのを待つために(または4L) – Sergey

関連する問題