मैं एक सी # असेंबली से गतिशील रूप से एक .jar चलाने की कोशिश कर रहा हूं (Process.Start(info)
का उपयोग कर)। अब, एक सांत्वना आवेदन से मैं बस चलाने के लिए सक्षम हूँ:विंडोज जावा स्थापना स्थान कैसे निर्धारित करें
ProcessStartInfo info = new ProcessStartInfo("java", "-jar somerandom.jar");
एक विधानसभा में, हालांकि, मैं का एक Win32Exception
मिलती रहती है "सिस्टम निर्दिष्ट फ़ाइल नहीं मिल सकता है" और पूर्ण करने के लिए लाइन बदलने के लिए जावा का पथ इस तरह:
ProcessStartInfo info = new ProcessStartInfo("C:\\Program Files\\Java\\jre6\\bin\\java.exe", "-jar somerandom.jar");
यह स्पष्ट रूप से नहीं करेगा। मुझे गतिशील रूप से (लेकिन घोषणात्मक रूप से) जावा के स्थापित स्थान को निर्धारित करने का एक तरीका चाहिए।
मैंने रजिस्ट्री को देखने की सोच शुरू कर दी, लेकिन जब मैं वहां गया तो मैंने देखा कि संस्करणों के लिए विशिष्ट कुंजी थीं और उन्हें संख्यात्मक होने की भी गारंटी नहीं दी जा सकती थी (उदाहरण के लिए "HKEY_LOCAL_MACHINE \ सॉफ़्टवेयर \ जावा सॉफ़्ट \ जावा रनटाइम पर्यावरण \ 1.6 "और" HKEY_LOCAL_MACHINE \ सॉफ़्टवेयर \ जावा सॉफ़्ट \ जावा रनटाइम पर्यावरण \ 1.6.0_20 ")।
सी # एप्लिकेशन से सबसे अद्यतित java.exe पथ खोजने के लिए सबसे विश्वसनीय "लंबी दूरी" समाधान क्या होगा?
अग्रिम धन्यवाद।
- संपादित करें -
GenericTypeTea का एक संयोजन की और Stephen Cleary के जवाब के लिए धन्यवाद, मैं इस मुद्दे के साथ हल किया है निम्नलिखित:
private String GetJavaInstallationPath()
{
String javaKey = "SOFTWARE\\JavaSoft\\Java Runtime Environment";
using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(javaKey))
{
String currentVersion = baseKey.GetValue("CurrentVersion").ToString();
using (var homeKey = baseKey.OpenSubKey(currentVersion))
return homeKey.GetValue("JavaHome").ToString();
}
}
यह सही दिखता है! यह इंगित करने के लिए धन्यवाद कि मुझे 'CurrentVersion' याद आया। हालांकि, मैं 'आरके' पर नलरफ को प्राप्त करता रहता हूं।; ( – Lance
यह एक आम सम्मेलन है कि उपयोगकर्ता "ऑटोडाइक्टेड" जावा पथ को "JAVA_HOME" नामक पर्यावरण चर के साथ ओवरराइट कर सकता है। प्रोग्रामर को टोपी का सम्मान करना चाहिए और उस चर की प्राथमिकता देना चाहिए: string java_path = Environment.GetEnvironmentVariable ("JAVA_HOME") ?? GetJavaInstallationPath(); –
@ लांस - मैं जावा विशेषज्ञ नहीं हूं, इसलिए यह केवल एक सर्वोत्तम अनुमान है। क्या आपको यह देखने के लिए एक नजर है कि कुंजी क्या है? @SchlaWiener - आपके उत्तर को अपडेट करने के लिए मेरा उत्तर अपडेट किया गया टिप्पणी (मुझे लगता है) – GenericTypeTea