2012-12-12 12 views
8

मैं एक जावा प्रोग्राम लिखना चाहता हूं जो वर्चुअलबॉक्स अतिथि मशीन में एक प्रोग्राम (उदा: फ़ायरफ़ॉक्स) लॉन्च करता है। मेजबान विंडोज है और अतिथि उबंटू है। एसडीके दस्तावेज के अनुसार, ऐसा करना संभव होना चाहिए। यहाँ जावा में मेरे प्रयास मैं क्या दस्तावेज में देखा है के आधार पर (इस वीएम मानकर चलती है और चल रहा है) है:वर्चुअलबॉक्स: अतिथि में प्रोग्राम लॉन्च करने के लिए एसडीके एपीआई का उपयोग करना?

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) 

मैं मैंने ताले और सत्र के साथ विभिन्न विकल्पों की कोशिश की है, लेकिन हमेशा कुछ प्रकार की त्रुटि प्राप्त करें। अगर मैं लॉक टाइप लिखने के लिए सेट करता हूं, तो मुझे "सत्र में मशीन असाइन करने में विफल" त्रुटि मिलती है।

क्या किसी ने ऐसा किया है? क्या कोई ठोस जावा वर्चुअलबॉक्स ट्यूटोरियल ऑनलाइन है? मुझे Google के साथ कोई नहीं मिला।

किसी भी सलाह की सराहना की।

+0

आप एक ठीक @TrentCoder मिला? – aandis

उत्तर

0

मुझे यह भी नहीं पता कि एसडीके के साथ इसे कैसे किया जाए। लेकिन क्या आपने वर्चुअल मशीन पर SSH के माध्यम से सराहना की है? मुकदमा आपको नेटवर्क स्थापित करने की ज़रूरत है और यह सब कुछ है, लेकिन यह एक अच्छा विकल्प होगा, क्योंकि वर्चुअलबॉक्स एसडीके दस्तावेज की कमी इसे संग्रह के लिए जटिल बनाती है।

0

क्या आपने अतिथि सत्र शुरू होने तक प्रतीक्षा करने का प्रयास किया है। आपके मामले में कुछ इस तरह होना चाहिए इस

guestSession = guest.CreateSession (....

guestSession.waitFor (1L, 0L)

+0

क्या आपका मतलब '1L' के बजाय' GuestSessionWaitForFlag_Start' है? –

+0

हां। मेरे पास वही नौकरी है और प्रक्रिया तब शुरू होती है जब मेरा ऐप अतिथि सत्र के लिए इंतजार कर रहा है। जब मैं प्रतीक्षा करता हूं प्रतीक्षा करें (या waitForArray) अतिथि सत्र स्थिति होगी त्रुटि में। संभवतः, आपको अलग-अलग झंडे का प्रयास करना होगा। उदाहरण के लिए, ध्वज GuestSessionWaitForFlag_Status (या 4 एल) सत्र स्थिति बदल जाने तक प्रतीक्षा करने के लिए – Sergey

संबंधित मुद्दे