11

VirtualBox ゲスト マシンでプログラム (例: Firefox) を起動する Java プログラムを作成したいと考えています。ホストは Windows、ゲストは Ubuntu です。SDK のドキュメントによると、これを実行できるはずです。これは、ドキュメントで見たものに基づいたJavaでの私の試みです(これは、VMが稼働していることを前提としています):

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で見つけられません。

アドバイスをいただければ幸いです。

4

2 に答える 2

1

ゲスト セッションが開始されるまで待機しようとしましたか。あなたの場合、これは次のようになります

guestSession = guest.CreateSession(....

ゲストセッション.waitFor(1L, 0L)

于 2014-05-28T22:00:52.310 に答える