VirtualBox:使用SDK API在来宾中启动程序?

时间:2012-12-12 06:05:16

标签: java virtualbox

我想编写一个在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教程?我找不到谷歌。

任何建议表示赞赏。

2 个答案:

答案 0 :(得分:0)

我也不知道如何使用SDK。但是你试过通过SSH 发送推荐给虚拟机吗?苏,你需要建立网络和所有这些,但它将是一个很好的选择,因为缺乏VirtualBox SDK文档使归档变得复杂。

答案 1 :(得分:0)

您是否曾尝试等到来宾会话开始。在你的情况下,这应该是这样的

  

guestSession = guest.CreateSession(....

     

guestSession.waitFor(1L,0L)