2012-10-24 12 views
21

मुझे spring का उपयोग करके छोटी वेबसाइट बनाना है। तो मैं spring template project तो चुना new spring mvc project जो कुछ भी मैं कोशिश उसमें कोई त्रुटि होने वालेबिल्डिंग के दौरान वसंत त्रुटि

Errors occurred during the build. 
Errors running builder 'Maven Project Builder' on project 'mTime'.Errors occurred during the build. 
Errors running builder 'Maven Project Builder' on project 'mTime'. 
Could not calculate build plan: Failed to parse plugin descriptor for org.apache.maven.plugins:maven-war-plugin:2.1.1 (C:\Users\User01\.m2\repository\org\apache\maven\plugins\maven-war-plugin\2.1.1\maven-war-plugin-2.1.1.jar): invalid LOC header (bad signature) 
Failed to parse plugin descriptor for org.apache.maven.plugins:maven-war-plugin:2.1.1 (C:\Users\User01\.m2\repository\org\apache\maven\plugins\maven-war-plugin\2.1.1\maven-war-plugin-2.1.1.jar): invalid LOC header (bad signature) 
Could not calculate build plan: Failed to parse plugin descriptor for org.apache.maven.plugins:maven-war-plugin:2.1.1 (C:\Users\User01\.m2\repository\org\apache\maven\plugins\maven-war-plugin\2.1.1\maven-war-plugin-2.1.1.jar): invalid LOC header (bad signature) 
Failed to parse plugin descriptor for org.apache.maven.plugins:maven-war-plugin:2.1.1 (C:\Users\User01\.m2\repository\org\apache\maven\plugins\maven-war-plugin\2.1.1\maven-war-plugin-2.1.1.jar): invalid LOC header (bad signature) 

मुझे पता है कि mavenspring framework में शामिल है, और जब मैं निर्देशिका की जाँच करें, जार देखते हैं है।

मैं इस त्रुटि को कैसे हल कर सकता हूं?

उत्तर

52

त्रुटि संदेश के प्रासंगिक हिस्सा है:

invalid LOC header (bad signature) 

जो कुछ बाइनरी फ़ाइल का सुझाव तोड़ा जा रहा है, सबसे अधिक संभावना निर्भरता में से एक। आप एक तेजी से इंटरनेट कनेक्शन है, तो बस अपने पूरे Maven भंडार हटा सकते हैं और Maven सभी निर्भरता redownload करते हैं: से

rm -rf ~/.m2/repository/* 

भी देखें

+1

कि इतने आसान था, धन्यवाद आप –

+0

था कभी इस से पहले हो संभोग, लेकिन यह सबसे निश्चित रूप से जवाब था। – Nicholi

+3

या आप स्थानीय मैवेन रेपो से टूटी बाइनरी को हटा सकते हैं। पूरी निर्भरताओं को फिर से डाउनलोड करने की प्रतीक्षा करने के बजाय। –

25

मेरी अनुभव, invalid LOC header (bad signature) शायद डाउनलोड की वजह से सबसे अधिक है .jar फ़ाइल दूषित है।

यदि आपके पास धीमा इंटरनेट कनेक्शन है, तो पूरे मैवेन रिपॉजिटरी को हटाने के बजाय, आप त्रुटियों के संदेश (iee C:\Users\User01\.m2\repository\org\apache\maven\plugins\maven-war-plugin\2.1.1\) के संकेतों के अनुसार समस्याग्रस्त जार वाले फ़ोल्डर को हटाने का प्रयास कर सकते हैं। फिर निर्भरताओं को फिर से डाउनलोड करने के लिए mvn clean install -U का उपयोग करें।

+0

अब ठीक है, धन्यवाद –

+0

धन्यवाद @ केन। यह एक उद्धारक था। –

+0

ओ.के. सिद्धांत रूप में - एक स्क्रिप्ट समाधान के साथ अर्द्ध स्वचालित हो सकता है (अक्टूबर 2013 –

2

मैवेन चलाते समय डीबग आउटपुट जोड़ें। यह आपको दिखाएगा कि कौन सा जार टूट गया है। बस उसको हटाएं।

+0

ओ.के. सिद्धांत में - स्क्रिप्ट समाधान देखें –

3

मेरे लिए निम्न स्क्रिप्ट कई बार काम करने के लिए काम किया। यह एमएनएन परिणाम में सीएन और एलओ हेडर लाइन मुद्दों की तलाश करता है और जार को एक-एक करके हटाने के लिए कहता है। कुछ हटाने के बाद और चीजों को फिर से काम करना चाहिए। मैं पूरी तरह से स्वचालित करने की हिम्मत नहीं की थी।

#!/bin/sh 
# fix issues like: 
#[ERROR] error: error reading /Users/wf/.m2/repository/org/docx4j/xhtmlrenderer/1.0.0/xhtmlrenderer-1.0.0.jar; invalid LOC header (bad signature) 
# WF 2013-10-27 
mvnlog=/tmp/mvnlog$$ 
mvnproblem=/tmp/mvnproblem$$ 
mvn install | tee $mvnlog 
grep "invalid ... header" $mvnlog > $mvnproblem 
for culprit in `cat $mvnproblem | cut -d" " -f5 | cut -d ";" -f1` 
do 
    echo "fix mvn LOC header issue with $culprit? yes/no/abort" 
    read answer 
    case $answer in 
     y*|Y*) rm $culprit;; 
     n*|N*) ;; 
     *) exit 1; 
    esac 
done 
rm -f $mvnproblem 
rm -f $mvnlog 
0
Help -> Install New Softwares 

वहां से वेब के घटनाक्रम, एक्सएमएल, सीएसएस, जावा ईई ... साथ और उसके बाद अगर यह बनाया समस्या अभी भी जारी रखने के बंडल स्थापित करते हैं, आदेश का उपयोग करें कृपया

rm -rf ~/.m2/repository/* 
0

इसे आज़माएं:

find ~/.m2 -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \; 
3

यह थ्रो क्योंकि आपका .jar अमान्य या दूषित है।

कदम का पालन करें:

नोट: .m2 फ़ोल्डर डिफ़ॉल्ट रूप से छुपा है। फ़ोल्डर को अनदेखा करें।

चरण 1: .m2/रिपोजिटरी फ़ोल्डर में सभी सामग्री हटाएं।

चरण 2: अपना ग्रहण पुनरारंभ करें।

चरण 3: मेवेन-> अद्यतन परियोजना। जांच - स्नैपशॉट/विज्ञप्ति के बल अद्यतन।

चरण 4: मेवेन क्लीन के रूप में चलाएं।

चरण 5: मैवेन इंस्टॉल के रूप में चलाएं।

चरण 6: स्वच्छ परियोजना।

चरण 7: अपना प्रोजेक्ट चलाएं।

मैं आशा है कि .. आप यहाँ अपने समाधान खोजने के

धन्यवाद ..

1

अपराधी जब विंडोज पर बिलाव शुरू कर यह त्रुटि मिल रही है या जब आप वोल्फगैंग की पटकथा नहीं चला सकते हैं बदलने के लिए है खोजने के लिए एक अन्य समाधान कैटलिना.जर में JarResourceSet.class एक संस्करण के साथ जिसमें अतिरिक्त डिबगिंग है।

Ie बिलाव के अपने संस्करण के लिए स्रोत कोड के लिए गूगल और initInternal() विधि अनुकूलन:

String processingJar = ""; 

    try (JarFile jarFile = new JarFile(getBase())) { 
     processingJar = jarFile.getName(); 

     ... 
    } catch (IOException ioe) { 
     System.out.println("Failed with " + processingJar); 
     throw new IllegalArgumentException(ioe); 
    } 

बनाने के लिए, अपने classpath अपने बिलाव lib निर्देशिका जैसे को इंगित करना चाहिए:

javac -cp C:\apache-tomcat-X.Y.Z\lib\* JarResourceSet.java 

फिर उचित निर्देशिका में catalina.jar में डालने और टोमकैट चलाने के लिए 7zip या इसी तरह के प्रोग्राम का उपयोग करें। मैं आश्चर्यचकित था कि यह पहली बार काम करता था लेकिन ऐसा हुआ। (फिर आपको बस यह पता लगाना होगा कि आपके .m2 रिपोजिटरी में अपमानजनक जार फ़ाइल है और हटाएं और पुनर्निर्माण आदि)

1

यदि आप अपने स्थानीय मैवेन रिपोजिटरी को पूरी तरह से हटाना नहीं चाहते हैं, तो टूटा खोजने के लिए निम्न का उपयोग करें कलाकृतियों और उन्हें हटाने:

public static void main(String[] args) throws IOException { 
    findBrokenZip(Paths.get(System.getProperty("user.home") + "/.m2/repository")); 
} 

static void findBrokenZip(Path path) throws IOException { 
    try (DirectoryStream<Path> stream = Files.newDirectoryStream(path)) { 
     for (Path entry : stream) { 
      if (Files.isDirectory(entry)) { 
       findBrokenZip(entry); 
      } else { 
       if (entry.getFileName().toString().endsWith(".jar")) { 
        try (JarFile zipFile = new JarFile(entry.toFile())) { 
         zipFile.getManifest(); 
        } catch (ZipException e) { 
         Files.delete(entry); 
        } 
       } 
      } 
     } 
    } 
} 
संबंधित मुद्दे