CreateProcess error = 206, मुख्य () विधि से चलने पर फ़ाइल नाम या एक्सटेंशन बहुत लंबा होता है


98

मुझे ग्रहण करने वाले हेलियोस में यह त्रुटि है:

अपवाद कमांड लाइन निष्पादित करने में हुआ। प्रोग्राम "C: \ Program Files (x86) \ Java \ jre6 \ bin \ javaw.exe" को नहीं चलाया जा सकता (निर्देशिका में "C: \ Users \ motiver \ helios_workspace \ TimeTracker"): CreateProcessor = 206, फ़ाइल नाम या एक्सटेंशन है बहुत लंबा

मैंने थोड़ा शोध किया लेकिन ज्यादातर मुद्दे Google App Engine पर काम करते समय DataNucleus से संबंधित थे। लेकिन मैं Google App Engine से संबंधित किसी भी चीज़ का दूर से उपयोग नहीं कर रहा हूं। मैं JBOSS 6 पर सर्वलेट 3.0 के साथ एक छोटा सा प्रोजेक्ट कर रहा हूं। मैं एक वेब सेवा को उजागर करने के लिए ORM और RESTEasy के लिए हाइबरनेट 4.1.2 का उपयोग कर रहा हूं। मैंने एक उपयोग फ़ाइल बनाई जिसमें एक मुख्य () विधि है जो मूल रूप से ड्रॉप करता है और स्कीमा को फिर से बनाता है। जब मैं परीक्षण उद्देश्यों के लिए एक स्वच्छ डेटाबेस की आवश्यकता करता हूं तो मैं मुख्य () मेथोस चलाता हूं। इसने टॉमकैट 7 पर ठीक काम किया लेकिन जब मैंने JBoss 6 में स्थानांतरित किया तो इसने काम करना बंद कर दिया।

किसी भी संकेत या समाधान की बहुत सराहना की जाएगी।



उपयोगी हो सकता है: bugs.eclipse.org/bugs/show_bug.cgi?id=327193
जेरेमी

मैं समझना चाहता हूं कि क्या C:\Program Files (x86)\Java\jre6\bin\javaw.exeलंबा है या दूसरा है C:\Users\motiver\helios_workspace\TimeTracker। मुझे भी यही समस्या हो रही है।
शिव

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

जवाबों:


49

इस मुद्दे पर कोई सरल (कुछ क्लिक या साधारण कमांड के रूप में) समाधान है।

Eclipse.org में इस बग रिपोर्ट में कुछ जवाबों का हवाला देते हुए , ये काम के आसपास हैं। वह चुनें जो आपके लिए सबसे कम दर्दनाक हो:

  • कक्षापथ को कम करें
  • जार फ़ाइलों के बजाय निर्देशिकाओं का उपयोग करें
  • एक पैक जार फ़ाइलों का उपयोग करें जिसमें अन्य सभी जार शामिल हैं, अन्य जार को इंगित करने के लिए मैनिफ़ेस्ट फ़ाइल के अंदर क्लासपैथ चर का उपयोग करें
  • एक विशेष वर्ग लोडर का उपयोग करें जो एक विन्यास फाइल से क्लासपाथ पढ़ता है
  • बग रिपोर्ट दस्तावेज़ में संलग्न पैच में से एक का उपयोग करने का प्रयास करें
  • चींटी जैसे स्वयं के आवरण का उपयोग करें

अद्यतन : जुलाई 2014 के बाद, एक बेहतर तरीका है ( नीचे ब्रैड-मेस के जवाब के लिए धन्यवाद :

यदि आपने उपयोग करने के बजाय अपनी स्वयं की बिल्ड फ़ाइल बनाई है Project -> Generate Javadocs, तो आप useexternalfile="yes"Javadoc कार्य में जोड़ सकते हैं , जो विशेष रूप से इस समस्या को हल करने के लिए डिज़ाइन किया गया है।


16
जेवीएम लॉन्च करते समय इस्तेमाल किए जाने वाले क्लासपाथ की लंबाई पूरी तरह से होने के कारण इंटेलीजे को यह समस्या कैसे नहीं होगी ?
नाइटिंड

1
यह केवल ग्रहण की समस्या हो सकती है, मैं मावेन का उपयोग करके ऐप को चलाने में सक्षम हूं।
सुरज

3
@nitind "IntelliJ IDEA में वे मुख्य वर्ग को एक उत्पन्न के साथ स्थानापन्न करते हैं। इसमें हार्डकोडेड क्लासपाथ और मूल मुख्य वर्ग को लॉन्च करने के लिए कोड होता है।" Bugs.eclipse.org/bugs/show_bug.cgi?id=327193#c8
चोबियस

2
2014 में, यह उत्तर गलत है और @ ब्रैड मेस द्वारा सही है।
Bananeweizen

5
"क्लासपाथ को कम करें" एक अच्छा संकेत है, लेकिन मुझे इस पर थोड़ा विस्तार से बताएं: मेरे मामले में, मैंने एक मावेन प्रोजेक्ट बनाने की कोशिश की, और -classpathसभी निर्भरताओं को शामिल करने के लिए तर्क उत्पन्न किया गया। तो, कुछ इस तरह से सामने आया C:\Users\myself\.m2\repository\…;C:\Users\myself\.m2\repository\…[…tons more]:। D:\m2चाल करने के लिए मेरे स्थानीय मावेन रेपो कैश को आगे बढ़ाते हुए: क्लासपैथ नीचे से D:\m2\…;D:\m2\…बिंगो तक पहुंच गया ! localRepositoryअपने मावेन कॉन्फ़िगरेशन में पथ सेट करना याद रखें ।
थॉमसआर

18

यदि आप कार्य करने के लिए Project -> Generate Javadocsजोड़ सकते हैं , जो विशेष रूप से इस समस्या को हल करने के लिए डिज़ाइन किया गया है का उपयोग करने के बजाय अपनी स्वयं की बिल्ड फ़ाइल बनाएँ ।useexternalfile="yes"javadoc


1
हाय - मैं इसे कैसे जोड़ूं?
प्रतीक नरेंद्र

@PrateekNarendra आप इसे अपने चींटी बिल्डफाइल (बिल्ड.xml) में जोड़ेंगे
ब्रैड मेस

17

मुझे आज इस समस्या का सामना करना पड़ा और मैं इस ग्रेडल प्लगइन का उपयोग करके इसे हल करने में सक्षम था

यह github url है

यदि आप, मेरी तरह, मुझे पता नहीं है कि ग्रैडल क्या है, लेकिन अपने फ्रंट एंड काम करने के लिए बैकएंड को चलाने की आवश्यकता है, तो आपको जो करने की आवश्यकता है वह बिल्ड है ।ग्रेड फ़ाइल जिसे आपके बीई सर्वर को शुरू करने के लिए कहा जा रहा है और इसमें जोड़ें चोटी:

plugins {
  id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"
}

3
अब मुझे "सेट होने के बावजूद मुख्य वर्ग का नाम कॉन्फ़िगर नहीं किया गया है और इसे हल नहीं किया जा सका है"attributes["Main-Class"]
एंटोन 3

1
मैं प्लगइन का उपयोग करने की कोशिश की, लेकिन कोई प्रभाव नहीं। मुद्दा अभी भी आ रहा है। कृपया सुझाव दें
अमरनाथपटेल

8

यहाँ मेरे अपने प्रश्न का उत्तर देना ताकि समाधान टिप्पणियों में दफन न हो। मैंने ग्रहण के भीतर से एक रन जार के रूप में परियोजना का निर्यात किया और एक कमांड लाइन "जावा-मज़ार MyJar.jar" किया और यह पूरी तरह से ठीक काम करता है



5

यह विशेष रूप से ग्रहण के लिए नहीं है, लेकिन जिस तरह से मैंने इसे प्राप्त किया वह मेरे मावेन रिपॉजिटरी का एक प्रतीकात्मक लिंक बनाने और "सी: \ आर" जैसी किसी चीज़ की ओर इशारा करते हुए था। फिर मैंने अपनी सेटिंग में निम्नलिखित जोड़ा। xml फ़ाइल:

<localRepository>C:\R</localRepository>

मावेन रिपॉजिटरी पथ मेरी विंडोज़ मशीन में लंबाई की समस्याओं में योगदान दे रहा था।


5

** यहाँ छवि विवरण दर्ज करें **

Intellij में 'शॉर्ट कमांड लाइन' का एक विकल्प है, 'JAR मेनिफ़ेस्ट' या '@argFiles' चुनें समस्या को हल करेंगे, मूल रूप से यह आपके लंबे वर्ग पथ को जार फ़ाइल या टेम्प फ़ाइल में डाल देगा।


4

प्रश्न पुराना है, लेकिन फिर भी मान्य है। मैं इस स्थिति में अक्सर आता हूं जब भी कोई नया सदस्य मेरी टीम में शामिल होता है या मौजूदा कोड में एक नया कोड खंड जोड़ा जाता है। साधारण वर्कअराउंड जो हम अनुसरण करते हैं, वह है "द क्लासेस को कम करें" डायरेक्टरीज़ को ऊपर ले जाकर।

जैसा कि उल्लेख किया गया है, यह ग्रहण के लिए विशिष्ट नहीं है। मैं IntelliJ Idea 14 और 2018 में भी इस मुद्दे पर आया था।

लंबे शोध के बाद, मैंने पाया कि समाधान सेट करना है

कांटा = असत्य

चींटी बिल्ड फ़ाइल के javc में।

<javac destdir="${build.dir}" fork="false" debug="on">
    <classpath .../>
    <src ... />
    <patternset ... />
</javac>

इस तरह से मेरा चींटी का निर्माण जेवैक अब दिखता है। कांटा के बारे में अधिक जानने के लिए, कृपया चींटी प्रलेखन देखें।


यह एफ ** राजा प्रभावी उत्तर है जो मैं पा रहा हूं। धन्यवाद
हुतांग

3

बग रिपोर्ट बग 327193 में यह तय माना जाता है, लेकिन यह मेरे लिए हाल ही में ग्रहण केपलर 4.3.2 के साथ हुआ।

कृपया ग्रहण जूनो या नए के लिए पैच डाउनलोड करें:

https://bugs.eclipse.org/bugs/attachment.cgi?id=216593

  1. मौजूदा ग्रहण / प्लगइन्स / org.eclipse.jdt.launching_3। * Jar को डाउनलोड करने के बाद।
  2. पैच में org.eclipse.jdt.launching JAR (मौजूदा फ़ाइलों को बदलें) में कॉपी और पेस्ट करें।
  3. ग्रहण को पुनः आरंभ करें।

इसने मेरे लिए काम किया। ध्यान दें कि इसे लागू करने से स्थापित JRE से मेरे JDK जावा इंस्टॉलेशन को हटा दिया गया है। मुझे उन्हें फिर से जोड़ना पड़ा। केवल 1 JRE इंस्टॉलेशन कायम रहा।
जोयेतह

मजेदार बात, आप अपने मुद्दे पर एसओ के जवाबों की तलाश करते हैं और उनमें से एक जवाब उस व्यक्ति से है जिसे आप अध्ययन करते थे / साथ काम करते थे :)
माइकेल स्ज़कुडलारेक

1

इसे इस्तेमाल करे:

java -jar -Dserver.port = 8080 build / libs / APP_NAME_HERE.jar


1

इसे हल करने के लिए:

यदि आप ग्रहण का उपयोग कर रहे हैं:

.M2 रिपॉजिटरी में ले जाएँ

c: \ Eclipse> Windows / Preferences / Maven / User Settings -> अपनी सेटिंग बनाएँ।

<settings>
  <localRepository>c:/.m2/repository</localRepository>
</settings>

यदि आप IntelliJ का उपयोग कर रहे हैं: IntelliJ> "pom.xml" पर दाएं माउस बटन पर क्लिक करके> maven> "settings.xml" बनाएं

इसकी सामग्री के साथ:

<settings>
      xmlns="yourcontent"
      xmlns:xsi="yourcontent"
      xsi:schemaLocation="yourcontent.xsd">
  <localRepository>c:/.m2/repository</localRepository>
</settings>

1

मावेन को आमंत्रित करते समय मुझे वही त्रुटि मिली है।

मेरी समस्या का मूल कारण classpathबहुत बड़ा था। क्लासपाथ को अद्यतन करने से समस्या ठीक हो गई।

इसमें वर्णित बड़े वर्गपथ को अपडेट करने के कई तरीके हैं: विंडोज में एक लंबा जावा वर्गपथ कैसे सेट करें?

  1. वाइल्डकार्ड का उपयोग करें
  2. तर्क फ़ाइल
  3. पाथिंग जार

चूंकि मैं Intellij का उपयोग कर रहा हूं, वे Argument File का उपयोग करने का विकल्प प्रदान करते हैं जो मैंने उपयोग किया था।


5
Updating the classpath- किस तरह?
वोलैंड

1
एक बहुत अस्पष्ट जवाब। आपने कक्षापथ को कैसे अपडेट किया?
टेस्टिला

क्लासपाथ जैसे वाइल्डकार्ड को अपडेट करने के कई तरीके हैं।
संदीप जिंदल

1

इसे build.gradle ( gradle version 4.10.x) फ़ाइल में जोड़ने का प्रयास करें और देखें कि यह com.xxx.MainClassवह वर्ग है जहाँ आपकी मुख्य विधि रहती है:

plugins {
  id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"
}
apply plugin: 'application'
application {
    mainClassName = "com.xxx.MainClass"
}

उपरोक्त परिवर्तन से समस्या का समाधान होना चाहिए, run.shनीचे स्क्रिप्ट का उपयोग करने का एक और तरीका है जो इस मुद्दे को ठीक कर सकता है, लेकिन यह कमांड-लाइन फिक्स का अधिक होगा, लॉन्च करने के लिए इंटेलीज में नहीं gradle bootRun


0

यह DataNucleus के कारण होता है कभी-कभी कई रास्तों के साथ तर्क को ओवरराइट करते हैं।

आपको उन्हें इसके साथ लिखना होगा:

-हेनसेरनामे ASM -api JDO -pu MediaToGo

आशा है कि आप मदद!


0

इस सूत्र से मान्य उत्तर मेरे विशेष मामले के लिए सही उत्तर था। Datanucleus के लिए ORM फ़ोल्डर पथ निर्दिष्ट करें निश्चित रूप से जावा पथ संकलन को कम करें।

https://stackoverflow.com/a/1219427/1469481


0

' चींटी की तैनाती ' चलाते समय मुझे नीचे त्रुटि मिली

Cannot run program "C:\java\jdk1.8.0_45\bin\java.exe": CreateProcess error=206, The filename or extension is too long

इससे पहले ' चींटी साफ ' चलाकर इसे ठीक किया।


1
अगर मैं एंड्रॉइड स्टूडियो का उपयोग कर रहा हूं तो क्या होगा? मैं भी इसी मुद्दे को प्राप्त कर रहा हूं
portfoliobuilder

मैं intelliJ का उपयोग कर रहा हूं
kn3l

0

मुझे एंड्रॉइड स्टूडियो में वही त्रुटि मिली। मैं IDE में बिल्ड -> क्लीन प्रोजेक्ट चलाकर इसे हल करने में सक्षम था ।


0

यह आपके लंबे प्रोजेक्ट डायरेक्टरी नाम के कारण है, जो आपको CLASSPATHपूरी तरह से बहुत लंबा समय देता है । या तो आपको इसमें जोड़े गए जार को कम CLASSPATHकरना होगा (सुनिश्चित करें कि केवल अनावश्यक जार को हटा दें) या सबसे अच्छा तरीका परियोजना निर्देशिका को कम करना और परियोजना को फिर से आयात करना है। यह कम हो जाएगा CLASSPATH। इसने मेरे लिए काम किया।


0

मुझे भी यही समस्या थी, लेकिन मैं इसके बजाय नेटबीन्स का उपयोग कर रहा था।
मुझे एक समाधान मिल गया है इसलिए मैं यहाँ साझा कर रहा हूँ क्योंकि मुझे यह कहीं भी नहीं मिला है, इसलिए यदि आपको नेटबीन्स पर यह समस्या है, तो यह कोशिश करें:
(नाम मेरे नेटबैंस के बन्द होने के बाद से बंद हो सकते हैं) राइट क्लिक प्रोजेक्ट> गुण > निर्माण> संकलन> बाहरी VM पर रन संकलन अनचेक करें।


0

मुझे भी यही त्रुटि मिली। सफाई, पुनर्निर्माण, अमान्य कैश, रिटार्ट आदि जैसे समाधान की कोशिश की जाती है, लेकिन कुछ भी काम नहीं करता है।

मैंने अभी संक्षिप्त नाम के साथ एक नया फ़ोल्डर बनाया है और नए फ़ोल्डर में सभी फ़ाइलों (ऐप फ़ोल्डर, वर्गीकृत फ़ाइलें आदि) की नकल की है। Android स्टूडियो और इसके ठीक काम में खुला आवेदन।


0

मेरे मामले में त्रुटि दिखाई दे रही थी क्योंकि सिस्टम जावा संस्करण intellijj / ग्रहण जावा संस्करण से अलग था। सिस्टम और उपयोगकर्ता के जावा संस्करण अलग थे। यदि आप एक संस्करण का उपयोग करके अपने कोड को संकलित करते हैं और एक अलग संस्करण का उपयोग करके चलाने की कोशिश करते हैं, तो यह त्रुटि हो जाएगी। उपयोगकर्ता जावा संस्करण 1.8 है

#The system java version is 1.7.131
$ java -version
java version "1.7.0_131"

लंबी कहानी छोटी, सुनिश्चित करें कि आपका कोड एक ही जावा संस्करण द्वारा संकलित और चलाया गया है।



0

इस नीचे की त्रुटि को ठीक करने के लिए, मैंने पर्याप्त शोध किया, कोई महान समाधान नहीं मिला, मैंने इस स्क्रिप्ट को तैयार किया और यह ठीक काम कर रहा है, जनता के साथ साझा करने और इसका उपयोग करने और वहां समय बचाने के लिए सोचा।

CreateProcess error = 206, फ़ाइल नाम या एक्सटेंशन बहुत लंबा है

यदि आप ग्रेडल बिल्ड टूल का उपयोग कर रहे हैं, और निष्पादन योग्य फ़ाइल आपके एप्लिकेशन की बिल्ड / लिबास निर्देशिका में रखी गई है। run.sh-> इस फाइल को अपने प्रोजेक्ट के रूट डायरेक्टरी में बनाएं, और इसमें स्क्रिप्ट के नीचे कॉपी करें, फिर git bash पर जाएं और run.sh टाइप करें। उम्मीद है की यह मदद करेगा!

#!/bin/bash dir_name=`pwd` if [ $# == 1 ] && [ $1 == "debug" ] then port=$RANDOM quit=0 echo "Finding free port for debugging" while [ "$quit" -ne 1 ]; do netstat -anp | grep $port >> /dev/null if [ $? -gt 0 ]; then quit=1 else port=`expr $port + 1` fi done echo "Starting in Debug Mode on "$port gradle clean bootjar jar_name="build/libs/"`ls -l ./build/libs/|grep jar|grep -v grep|awk '{print $NF}'` #java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=$port $jar_name elif [ $# == 1 ] && [ $1 == 'help' ] then echo "please use this commands" echo "------------------------" echo "Start in Debug Mode: sh run.sh debug" echo "Start in Run Mode: sh run.sh" echo "------------------------" else gradle clean bootjar word_count=`ls -l ./build/libs/|grep jar|grep -v grep|wc -w` jar_name=`ls -l ./build/libs/|grep jar|grep -v grep|awk '{print $NF}'`
jar_path=build/libs/$jar_name echo $jar_name #java -jar $jar_path fi

उम्मीद है की यह मदद करेगा!!


0

मैं ग्रेड प्लगइन्स के विरासत संस्करण का उपयोग कर रहा हूं और यह प्लगइन ने मेरे लिए समस्या को हल कर दिया है।

उपयोग (अधिक विवरण के लिए चेक स्रोत):

प्लगइन्स के लिए स्क्रिप्ट स्निपेट बनाएँ ग्रेडेड 2.1 और बाद के लिए डीएसएल

plugins {
  id "com.github.ManifestClasspath" version "0.1.0-RELEASE"
}

पुराने ग्रेडल संस्करणों या जहां गतिशील कॉन्फ़िगरेशन की आवश्यकता होती है, वहां स्क्रिप्ट स्निपेट का उपयोग करें

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.com.github.viswaramamoorthy:gradle-util-plugins:0.1.0-RELEASE"
  }
}

apply plugin: "com.github.ManifestClasspath"

0

विंडोज मशीन में, कमांड लाइन में जार फ़ाइल नाम / पथ की लंबाई की सीमा होती है, जिसके कारण आप नीचे त्रुटि संदेश देखते हैं, मैंने बहुत खोज करने की कोशिश की, यहां तक ​​कि मैंने उपरोक्त समाधान को लागू करने की कोशिश की, कुछ कारण, यह काम नहीं किया, मुझे ग्रेडल के लिए काम करने का स्निपेट मिला (gradle-4.10.2-all.zip)

त्रुटि:

CreateProcess error=206, The filename or extension is too long

gradle.buildIntelliJ या STS में उपरोक्त समस्या को ठीक करने के लिए, या कुछ भी ग्रहण करने के लिए नीचे दिए गए कोड स्निपेट का उपयोग करें ।

ग्रेड कोड तय करें:

apply plugin: 'application'

task pathingJar(type: Jar) {
    dependsOn configurations.runtime
    appendix = 'pathing'

    doFirst {
        manifest {
            attributes "Class-Path": configurations.runtimeClasspath.files.collect { it.getName() }.join(' ')
        }
    }
}

task copyToLib(type: Copy) {
    into "$buildDir/libs"
    from configurations.runtime
}

bootRun {
    systemProperties = System.properties
    //This below line is for if you have different profiles prod, dev etc...
    //systemProperty 'spring.profiles.active', 'dev'
    jvmArgs('-Djava.util.logging.config.file=none')
    mainClassName = "com.xxxx.Main"
    dependsOn pathingJar
    dependsOn copyToLib
    doFirst {
        classpath = files("$buildDir/classes/java/main", "$buildDir/resources/main", pathingJar.archivePath)
    }
}

0

ऊपर कितने लोग दुखी हैं, इस समस्या में पास होने के लिए बहुत सारे प्लगइन्स को निष्क्रिय करना है जैसे:

plugins {
  id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"
}

या

plugins {
  id "com.github.ManifestClasspath" version "0.1.0-RELEASE"
}

लेकिन मुझे जो बेहतर समाधान मिला, वह जेवीएम प्रक्रिया को मार रहा था और सब कुछ हो गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.