त्रुटि कोड 1 से बाहर निकलना

मैं उन फाइलों पर दो फ़ोल्डरों पर diff लागू करने की कोशिश कर रहा हूं जिनके समान नाम हैं।

मैं फाइलों का नाम जांच रहा हूं और फिर उन पर diff लागू कर रहा हूँ।

मैं उनके लिए सीकेजेएम मेट्रिक्स की भी गणना कर रहा हूं।

चलने पर यह त्रुटि कोड 1 से बाहर निकल रहा है।

कृपया जावा कार्यक्रम के माध्यम से सीएमडी संचालन चलाने में मदद करें।

Error : Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
Exited with error code 1
The common file names are [Inverse Trigono.doc, Limit _ Continuity & Differentia
bility.doc, Parabola.doc, Permutation and combination.doc, Probability.doc, Quad
ratic Equation and Expression.doc, Sequence and Series.doc, Solution of triangle
.doc, Straight Line.doc, TEST PAPER.rar, Vectors.doc]

अनुलेख मैं यहां पूछे गए लगभग सभी समान प्रश्नों से गुज़र चुका हूं लेकिन ऐसा लगता है कि यह थोड़ा अलग है।

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListFiles111 {

    public static void main(String[] args) {

           //Path of Folder 1
        String path1 = "C:\\Users\\hi\\Downloads\\IIT Typing\\IIT Typing"; 

           //Path of Folder 2
        String path2 = "C:\\Users\\hi\\Downloads\\IIT Typing\\IIT Typing"; 2

        File folder1 = new File(path1);
        File folder2 = new File(path2);

        ArrayList commonfiles = new ArrayList<>();

           //Array list of files of folder 1 created.
        List filesList1 = Arrays.asList(folder1.listFiles());

           //Array list of files of folder 1 created
        List filesList2 = Arrays.asList(folder2.listFiles());


        for (File f1 : filesList1) 
        {
            if (f1.isFile()) 
            {
                for (File f2 : filesList2) 
                {
                    if (f2.isFile() && f1.getName().equals(f2.getName())) 
                    {
                                     //Adding common name files in new Array list
                        commonfiles.add(f1.getName());                                          
                        try 
                        {
                            Runtime rt = Runtime.getRuntime();

                            String[] cmd = new String[5];
                            cmd[0] = "cmd.exe " ;
                            cmd[1] = "/C " ;
                            cmd[2] = "diff ";
                            cmd[3] = f1.getName() + " ";
                            cmd[4] = f2.getName();

                            Process pr = rt.exec( cmd );

                            BufferedReader input = new BufferedReader(
                                    new InputStreamReader(pr.getInputStream()));

                            String line = null;

                            while ((line = input.readLine()) != null) 
                            {
                                System.out.println(line);
                            }

                            int exitVal = pr.waitFor();
                            System.out.println("Exited with error code "
                                    + exitVal);

                        } 
                        catch (Exception e) 
                        {
                            System.out.println(e.toString());
                            e.printStackTrace();
                        }

                        try 
                        {
                            Runtime rt = Runtime.getRuntime();

                            String[] cmdd = new String[6];
                            cmdd[0] = "cmd.exe " ;
                            cmdd[1] = "/C " ;
                            cmdd[2] = "java ";
                            cmdd[3] = "-jar ";
                            cmdd[4] = "C:\\Users\\hi\\Desktop\\ckjm-1.9\\build\\ckjm-1.9.jar ";
                    cmdd[5] = "C:\\Users\\hi\\Desktop\\*.class";

                            Process pr = rt.exec( cmdd );

                            BufferedReader input = new BufferedReader(
                                    new InputStreamReader(pr.getInputStream()));

                            String line = null;

                            while ((line = input.readLine()) != null) 
                            {
                                System.out.println(line);
                            }

                            int exitVal = pr.waitFor();
                            System.out.println("Exited with error code "
                                    + exitVal);

                        } 
                        catch (Exception e) 
                        {
                            System.out.println(e.toString());
                            e.printStackTrace();
                        }

                    }
                }
            }
        }

        System.out.println("The common file names are " + commonfiles);
    }
}
0
आप कहाँ से अलग हो गए?
जोड़ा लेखक Robin Green, स्रोत
@ होवरक्राफ्टफुलऑफेल: हो गया .... कृपया जांचें .. प्रोग्राम संकलित है
जोड़ा लेखक user3054218, स्रोत
@ होवरक्राफ्टफुलऑफेल: सबसे पहले सीएमडी से कॉपी करने में समय लगता है ...
जोड़ा लेखक user3054218, स्रोत
विंडोज 7 ... इसे चलाने के लिए diff उपयोगिता का उपयोग .. पहले से सेट पथ निर्धारित है और diff cmd पर ठीक काम कर रहा है ..
जोड़ा लेखक user3054218, स्रोत
@ होवरक्राफ्टफुलऑफेल: अभी भी जीवित ... ???
जोड़ा लेखक user3054218, स्रोत
@ होवरक्राफ्टफुलऑफेल: मैंने इसके बारे में लगभग सबकुछ पढ़ा है ... और पिछले 7 दिनों से इसके साथ खेल रहा है ... केवल समस्या जो मैं कर रहा हूं f1 और f2 के साथ diff में तर्क के रूप में है ...
जोड़ा लेखक user3054218, स्रोत
diff उपयोगिता ... क्या आप कुछ भी पूछने से पहले लोग Google ... gnuwin32.sourceforge.net/packages /diffutils.htm
जोड़ा लेखक user3054218, स्रोत
"संकलन पर यह त्रुटि कोड 1 से बाहर निकल रहा है ..." - तो कोड संकलित नहीं होगा (और स्पष्ट रूप से नहीं चलेगा)? और आप कोई अन्य कंपाइलर त्रुटि संदेश नहीं देख रहे हैं? या प्रोग्राम वास्तव में चलाएं और फिर आप एक अपवाद संदेश देखते हैं? कृपया अपने प्रश्न के साथ सभी त्रुटियों और संदेशों को यहां पोस्ट करें।
जोड़ा लेखक Hovercraft Full Of Eels, स्रोत
संपादित करें: आप विश्वसनीय जानकारी नहीं दे रहे हैं। मैं देखता हूं कि आप त्रुटि कोड कहां देख रहे हैं, और यह आपके प्रोग्राम से आ रहा है, इसलिए आपका प्रोग्राम होना चाहिए संकलित करना और इसे देखने के लिए आपके लिए चलाएं। कृपया अपनी समस्या को स्पष्ट करें, और कृपया सटीक रहें।
जोड़ा लेखक Hovercraft Full Of Eels, स्रोत
आपके ओएस, आपके पर्यावरण के बारे में कोई अन्य जानकारी क्या है? आपने अभी भी त्रुटि संदेशों को पाठ के रूप में पोस्ट नहीं किया है। इसके अलावा, "diff" क्या प्रोग्राम है? यह आमतौर पर एक यूनिक्स उपयोगिता है और आप इसे विंडोज़ पर चल रहे हैं।
जोड़ा लेखक Hovercraft Full Of Eels, स्रोत
दोबारा, मैंने इस diff उपयोगिता के बारे में कभी नहीं सुना है। आपको इस उपयोगिता को और अधिक जानने की आवश्यकता होगी और पता चल जाएगा कि यह कब और क्यों काम नहीं करेगा।
जोड़ा लेखक Hovercraft Full Of Eels, स्रोत
फिर "diff उपयोगिता ... क्या आप कुछ भी पूछने से पहले लोग Google ..." - 100 diff utilities हैं, और हमें जादुई रूप से पता होना चाहिए कि आप कौन सा हो सकता है उपयोग कर रहा है - कैसे? जादू से? एक अजीब **** होने की बजाय, अपने प्रश्न में सभी प्रासंगिक जानकारी देने का प्रयास करें। इसके साथ मजा करो।
जोड़ा लेखक Hovercraft Full Of Eels, स्रोत

2 उत्तर

Runtime.exec() के बजाय ProcessBuilder का उपयोग करने पर विचार करें, यह आपको Runtime.exec() से बहुत अधिक नियंत्रण की अनुमति देता है, और आपको उस उपयोगिता के stdout और stderr को पढ़ने की अनुमति देगा, जिसे आप कॉल कर रहे हैं आपको आपकी समस्या का कारण खोजने में मदद मिलेगी।

एक और बात यह है कि आप अपनी फाइलों को File.getName() का उपयोग करके अपनी उपयोगिता में पास करते हैं, जो केवल फ़ाइल का नाम वापस करने जा रहा है, न कि इसका पूरा पथ। इसलिए, आपकी diff उपयोगिता उन फ़ाइलों के नामों को उसकी कार्यशील निर्देशिका के अनुसार व्याख्या करेगी, जो संभवतः उस फ़ोल्डर से अलग है जहां आपकी फ़ाइलें संग्रहीत की जाती हैं। इसे हल करने के लिए, आप या तो अपनी उपयोगिता का आह्वान करने से पहले कार्यशील निर्देशिका सेट करने के लिए ProcessBuilder का उपयोग कर सकते हैं, या आप File.getAbsolutePath() या File.getCanonicalPath ( ) पूर्ण पथ को पारित करने के लिए।

मुझे यकीन नहीं है कि यह विंडोज पर प्रासंगिक है, लेकिन क्या आपने Runtime.exec() पर दिए गए तर्कों से पिछली जगहों को हटाने का प्रयास किया है? याद रखें कि आप वास्तव में कमांड स्ट्रिंग नहीं बना रहे हैं। आपके द्वारा Runtime.exec() पर जाने वाले तर्क आपके ऑपरेटिंग सिस्टम में "जैसा है" पारित किए जाएंगे, और बनाई गई प्रक्रिया में "जैसा है" समाप्त हो जाएंगे। आपके मामले में, इसका मतलब है कि आपका ओएस "cmd.exe" नामक बाइनरी की तलाश करेगा, जो मुझे पूरा यकीन है कि मौजूद नहीं है। आपके सभी अन्य पैरामीटर के लिए ही चला जाता है।

साथ ही, "cmd.exe" को कॉल न करें, सीधे अपने प्रोग्राम को कॉल करें। खोल को बुलाए जाने और अपने कार्यक्रम को खोलने के लिए कहने का क्या मतलब है। बस कार्यक्रम को सीधे खोलें।

0
जोड़ा

इसका जवाब देना, भले ही यह पुराना हो क्योंकि मैं बस इसी तरह की तलाश कर रहा था। रिटर्न कोड '1' cmd.exe से है और इस के अनुसार "आंशिक" मुद्दा इंगित करता है https://msdn.microsoft.com/en-us/library/ms194959 (v = vs.100) .aspx लिंक। हो सकता है कि यह "diff" चल रहा हो। या शायद, जैसा ऊपर बताया गया है, cmd.exe फ़ाइलों को/आउटपुट के रूप में पास करने के लिए नहीं मिल सकता है। दोबारा, इसका परिणाम वास्तव में नहीं कहा जा रहा है और शेल से आने वाला रिटर्न कोड; diff कार्यक्रम नहीं। HTH

0
जोड़ा