2017-12-11 100 views
7

में प्रोसेसबिल्डर से कॉल करते समय EXE क्रैश मैं जावा प्रोसेसबिल्डर से कुछ EXE (7za.exe, pg_basebackup.exe, ...) का आह्वान कर रहा हूं। यह 2 या 3 दिनों के लिए किसी भी मुद्दे के बिना काम कर रहा है (EXE दैनिक कहा जाएगा)। उसके बाद EXE लगातार क्रैश हो रहा है।जावा

7za.exe error:
Exit code :: -1.073.741.502

Windows Event log error:
Faulting application name: 7za.exe, version: 9.20.0.0, time stamp: 0x4ce553f5 Faulting module name: KERNELBASE.dll, version: 6.2.9200.21941, time stamp: 0x5792e533
Exception code: 0xc0000142
Fault offset: 0x000683ba
Faulting process id: 0x10bc
Faulting application start time: 0x01d2cebdff3bb05a
Faulting application path: EXEpath\bin\7za.exe
Faulting module path: KERNELBASE.dll
Report Id: 3d27046a-3ab1-11e7-93fe-00505680156e
Faulting package full name:
Faulting package-relative application ID:

कोड स्निपेट

File workingDir = new File(workingDirectory); 
ProcessBuilder pb = new ProcessBuilder(argumentsList); 
pb.redirectErrorStream(true); 
pb.directory(workingDir);   
Process process = pb.start(); 
BufferedReader commandOutput = new BufferedReader(new 
InputStreamReader(process.getInputStream())); 
String s = null; 
while ((s = commandOutput.readLine()) != null) { 
    print(s); 
} 
int exitCode = process.exitValue(); 

इसके अलावा यह सभी मशीनों जो इस कोड को चलाने में नहीं हो रहा है। क्या यह कोई स्मृति रिसाव या ओएस स्तर त्रुटि है? कृपया सलाह दें।

अग्रिम धन्यवाद।

संपादित करें 1: सी # में समान प्रकार की त्रुटि। इसमें फिक्स भी शामिल है।
https://social.msdn.microsoft.com/Forums/vstudio/en-US/cb9a15ed-4401-47f1-8c78-0c63c3da677d/process-returns-0xc0000142-when-started-from-a-windows-service-prividing-the-credentials?forum=clr
जावा में इसे कैसे प्राप्त किया जाए?

संपादित करें 2: 1.0.051
Windows संस्करण: Windows सर्वर 2012 और आर 2 (64 बिट), विंडोज 7 (64 बिट), विंडोज 8 (64 बिट जावा (wrapper का प्रयोग करके)
जावा संस्करण एक सेवा के रूप में चल रहा है)

+0

ऐसा लगता है कि आपका पथ थोड़ा उलझन में है: 'EXEpath \ bin \ 7za.exe'? हो सकता है कि आपने गलती से उस स्थान पर कुछ टाइप किया हो जो आपके पास नहीं होना चाहिए :-) – Ivonet

+0

कृपया उस स्थान को अनदेखा करें। यह वास्तविक स्थान नहीं है। –

+0

क्या एक्सिस काम करते हैं यदि आप उन्हें मैन्युअल रूप से प्रारंभ करते हैं? (उन पर डबल क्लिक करके) – Asoub

उत्तर

0

तो मैं इस मुद्दे के अंतर्निहित कारण की पहचान करने के लिए अतिरिक्त विवरण मांगने के लिए उपर्युक्त टिप्पणियों से सहमत हूं (समस्याएं होने पर प्रक्रियाओं की संख्या, उदाहरण के मीट्रिक आदि)। आम तौर पर बोलते हुए मैं तर्क दूंगा कि यह जावा से निष्पादन योग्य कॉल करने के लिए एक विरोधी पैटर्न है यदि आप इससे बच सकते हैं। इस मामले में मैं आपको 7-zip binding जैसे किसी निष्पादन योग्य को कॉल को प्रतिस्थापित करने का प्रयास करने की अनुशंसा करता हूं।

यह आपको अंतर्निहित प्रक्रियाओं के प्रदर्शन में बेहतर अंतर्दृष्टि प्रदान करेगा और JVM के तहत प्रक्रियाओं के स्वामित्व और प्रबंधन को स्थानांतरित करेगा।