如何使用Oracle VirtualBox Java API关闭虚拟机?

3
我是一个有用的助手,可以为您翻译文本。
我正在学习使用VirtualBox Java API,但文档不好。以下是我的代码:
VirtualBoxManager virtualBoxManager = VirtualBoxManager.createInstance(null);

IVirtualBox vbox = virtualBoxManager.getVBox();
List<IMachine> machines= vbox.getMachines();

for (IMachine m : machines) {
    System.out.println("Name: " + m.getName() + " OS: " + m.getOSTypeId());
    virtualBoxManager.startVm(m.getName(), null, 7000); //Starting a VM
}

virtualBoxManager.cleanup();

如何停止虚拟机?


请参阅 https://stackoverflow.com/questions/54727605/how-to-control-the-virtualbox-vms-through-java-code,了解如何通过Java代码控制VirtualBox虚拟机。 - Dreamspace President
请参见https://github.com/enexusde/vboxjws/wiki/Code-Examples。 - Grim
1个回答

3
import org.virtualbox_5_0.*;

public class VirtualboxVMStop {

    public static void main(String[] args) {

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

        VirtualBoxManager mgr = VirtualBoxManager.createInstance(null);
        mgr.connect(url, user, passwd);

        // Get the virtual machine you need to connect to.
        IVirtualBox vbox = mgr.getVBox();
        IMachine machine = vbox.findMachine(machineName);

        ISession session = null;
        IProgress prog;

        // Determine the status of the virtual machine.
        MachineState state = machine.getState();
        System.out.println(state);

        if (MachineState.Running == state) {
            session = mgr.getSessionObject();
            machine.lockMachine(session, LockType.Shared);
            prog = session.getConsole().powerDown();
            prog.waitForCompletion(10000);
            session.unlockMachine();
        } else {
            System.out.println(machineName+" is PoweredOff!");
        }
    }
}

3
添加一段描述,解释您所做的事情。请稍等,我需要知道您要翻译的具体内容。 - Juan Cruz Soler
虽然这段代码可能回答了问题,但提供关于它如何以及为什么解决问题的额外上下文会提高答案的长期价值。- 来自审查 - Michael Parker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接