CreateProcess hatası = 206, main () yöntemini çalıştırırken dosya adı veya uzantı çok uzun


103

Tutulma helioslarında şu hatayı yaşıyorum:

Komut satırı yürütülürken istisna oluştu. "C: \ Program Files (x86) \ Java \ jre6 \ bin \ javaw.exe" programı çalıştırılamıyor ("C: \ Users \ motiver \ helios_workspace \ TimeTracker" dizininde): CreateProcess error = 206, Dosya adı veya uzantı çok uzun

Biraz araştırdım ama sorunların çoğu Google App Engine üzerinde çalışırken DataNucleus ile ilgiliydi. Ancak Google App Engine ile uzaktan ilgili hiçbir şey kullanmıyorum. JBOSS 6 üzerinde Servlet 3.0 ile küçük bir proje yapıyorum. ORM için Hibernate 4.1.2 ve bir web servisini ifşa etmek için RESTEasy kullanıyorum. Şemayı temelde düşüren ve yeniden oluşturan bir main () yöntemine sahip bir kullanım dosyası oluşturdum. Test amacıyla temiz bir veritabanına ihtiyacım olduğunda main () metodu çalıştırırım. Tomcat 7'de iyi çalıştı, ancak JBoss 6'ya taşındığımda çalışmayı bıraktı.

Herhangi bir ipucu veya çözüm çok takdir edilecektir.




C:\Program Files (x86)\Java\jre6\bin\javaw.exeUzun mu yoksa diğeri mi anlamak istiyorum C:\Users\motiver\helios_workspace\TimeTracker. Ben de aynı sorunu yaşıyorum.
Siva R

Gelecek nesil: Benzer bir durumum vardı, ancak WLS üzerinde basit bir kurumsal uygulama ve Eclipse üzerindeki istemci ile. Saptanmış olarak tüm WLS kitaplığını (tüm kavanozları) içeren sınıf yolunun Eclipse kadar muazzam olduğunu fark ettim. Onu kaldırdım ve sadece weblogic.jar ekledim (sadece gerekli). Daha sonra iyi çalıştı. Yani, benim gözlemime göre, gereksiz kavanozları çıkarın.
lupchiazoem

Yanıtlar:


51

Bu sorunun basit bir çözümü (birkaç tıklamayla veya basit bir komutla olduğu gibi) yoktur.

Eclipse.org'daki bu hata raporundaki bazı yanıtlardan alıntı yaptığımızda , bunlar geçici çözümlerdir. Size en az acı verecek olanı seçin:

  • Sınıf yolunu azaltın
  • Jar dosyaları yerine dizinleri kullanın
  • Diğer kavanozları içeren paketlenmiş bir jar dosyası kullanın, diğer kavanozlara işaret etmek için manifest dosyasının içindeki sınıf yolu değişkenini kullanın
  • Sınıf yolunu bir yapılandırma dosyasından okuyan özel bir sınıf yükleyici kullanın
  • Hata raporu belgesine ekli yamalardan birini kullanmayı deneyin
  • Kendi sarmalayıcıyı kullanın, örneğin karınca

Güncelleme : Temmuz 2014'ten sonra daha iyi bir yol var ( @ Brad-Mace'in aşağıdaki cevabı sayesinde :

Kullanmak yerine kendi yapı dosyanızı oluşturduysanız, bu sorunu çözmek için özel olarak tasarlanmış Javadoc görevine Project -> Generate Javadocsekleyebilirsiniz useexternalfile="yes".


17
Nasıl IntelliJ olur değil tamamen nedeniyle JVM başlatırken kullanılan sınıf yolunda uzunluğunun ise bu sorun var?
nitind

1
Bu sadece tutulma sorunu olabilir, uygulamayı maven kullanarak çalıştırabiliyorum.
surajz

3
@nitind "IntelliJ IDEA'da ana sınıfı oluşturulmuş bir sınıfla değiştirirler. Sabit kodlanmış sınıf yolunu ve orijinal ana sınıfı başlatmak için kodu içerir." Alındığı bugs.eclipse.org/bugs/show_bug.cgi?id=327193#c8
Chobicus

2
2014'te bu cevap yanlış ve @Brad Mace tarafından verilen cevap doğru.
Bananeweizen

5
"Sınıf yolunu azaltın" güzel bir ipucu, ancak bunu biraz detaylandırmama izin verin: Benim durumumda, bir maven projesi oluşturmaya çalıştım ve -classpathargüman tüm bağımlılıkları içerecek şekilde oluşturuldu. Yani, böyle bir şey çıktı: C:\Users\myself\.m2\repository\…;C:\Users\myself\.m2\repository\…[…tons more]. D:\m2Hile yapmak için yerel maven repo önbelleğimi taşımak : Classpath küçüldü D:\m2\…;D:\m2\…- bingo! localRepositoryYolu maven yapılandırmanızda ayarlamayı unutmayın .
ThomasR

18

Eğer kullanmak yerine kendi inşa dosyası oluşturursanız Project -> Generate Javadocsekleyebilir size useexternalfile="yes"karşı javadocbu sorunu çözmek için özel olarak tasarlanmıştır görev.


1
Merhaba - bunu tam olarak nasıl eklerim?
Prateek Narendra

@PrateekNarendra, bunu karınca derleme dosyanıza
Brad Mace

16

Bugün bu problemle karşılaştım ve bu Gradle eklentisini kullanarak çözebildim

Bu github url'si bu

Siz de benim gibi Gradle'ın ne olduğu hakkında hiçbir fikriniz yoksa, ancak ön uç çalışmanızı yapmak için bir arka uç çalıştırmanız gerekiyorsa yapmanız gereken , BE sunucunuzu başlatmak için çağrılan build.gradle dosyasını bulmak ve bunu üst:

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

3
Şimdi, ayarlanmasına rağmen "Ana sınıf adı yapılandırılmadı ve çözülemedi" attributes["Main-Class"]
mesajı alıyorum

2
Eklenti kullanmayı denedim ama etkisi olmadı. Sorun hala geliyor. Lütfen öner
amarnathpatel

8

Çözümün yorumlara gömülmemesi için burada kendi sorumu cevaplıyorum. Projeyi tutulmanın içinden çalıştırılabilir bir kavanoz olarak dışa aktardım ve "java -jar MyJar.jar" komut satırını yaptım ve mükemmel çalışıyor



5

Bu özellikle tutulma için değil, ama bunu aşma yolum, maven depomla sembolik bir bağlantı oluşturup onu "C: \ R" gibi bir şeye işaret etmekti. Daha sonra settings.xml dosyama şunları ekledim:

<localRepository>C:\R</localRepository>

Maven depo yolu, Windows makinemdeki uzunluk sorunlarına katkıda bulunuyordu.


5

** resim açıklamasını buraya girin **

Intellij'de 'komut satırını kısaltma' seçeneği vardır, 'JAR bildirimi'ni seçin veya' @argFiles 'sorunu çözecektir, temelde uzun sınıf yolunuzu bir jar dosyasına veya geçici bir dosyaya koyacaktır.


4

Soru eski, ama hala geçerli. Ekibime yeni bir üye katıldığında veya mevcut koda yeni bir kod segmenti eklendiğinde sıklıkla bu durumla karşılaşıyorum. İzlediğimiz basit bir çözüm, dizinleri yukarı taşıyarak "sınıf yolunu azaltmaktır".

Bahsedildiği gibi, bu tutulmaya özgü değil. Bu konuya IntelliJ Idea 14 ve 2018'de de rastladım.

Uzun bir araştırmadan sonra, çözümün

çatal = yanlış

javc of ant build dosyasında.

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

Karınca javac'ım şimdi böyle görünüyor. Fork hakkında daha fazla bilgi edinmek için lütfen karınca belgelerine bakın.


Bu bulduğum lanet etkili cevap. Teşekkürler
huuthang

3

Bug 327193 hata raporunda düzeltilmiş kabul edilir, ancak son zamanlarda Eclipse Kepler 4.3.2 ile başıma geldi.

Lütfen Eclipse Juno veya daha yenisi için yamayı indirin:

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

  1. İndirdikten sonra mevcut eclipse / plugins / org.eclipse.jdt.launching_3. *. Jar'ı yedekleyin
  2. Org.eclipse.jdt.launching JAR (mevcut dosyaları değiştirin) klasörüne sınıfları kopyalayıp yapıştırın.
  3. Eclipse'i yeniden başlatın.

Bu benim için çalıştı. Bunu uygulamanın, JDK Java yüklemelerimi Yüklü JRE'lerden kaldırdığına dikkat edin. Tekrar eklemem gerekti. Yalnızca 1 JRE yüklemesi kaldı.
Joetjah

Komik bir şey, sorununuzla ilgili SO ile ilgili cevaplar
ararsınız

1

Bunu dene:

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


1

Çözmek için:

Eclipse kullanıyorsanız:

.M2 deposunu şuraya taşı:

c: \ Eclipse> Windows / Tercihler / Maven / Kullanıcı Ayarları'na gidin -> İçeriğiyle kendi setting.xml dosyanızı oluşturun:

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

IntelliJ kullanıyorsanız: IntelliJ'e gidin> "pom.xml"> maven> oluştur "settings.xml" üzerinde farenin sağ düğmesini tıklayarak

içeriği ile:

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

1

Maven'i çağırırken aynı hatayı aldım.

Sorunumun temel nedeni classpathçok büyüktü. Sınıf yolunu güncellemek sorunu çözdü.

Burada belirtildiği gibi büyük sınıf yolunu güncellemenin birden fazla yolu vardır: Windows'ta uzun bir Java sınıf yolu nasıl ayarlanır?

  1. Joker karakterler kullanın
  2. Bağımsız Değişken Dosyası
  3. Yol kavanozu

Intellij kullandığım için, kullandığım Argüman Dosyasını kullanma seçeneği sunuyorlar.


5
Updating the classpath- Nasıl?
Woland

1
Çok belirsiz bir cevap. Sınıf yolunu nasıl güncellediniz?
Testilla

Joker karakter gibi, sınıf yolunu güncellemenin birden çok yolu vardır.
Sandeep Jindal

1

Bunu build.gradle ( gradle version 4.10.x) dosyasına eklemeyi deneyin ve com.xxx.MainClassana yönteminizin bulunduğu sınıfın bu olduğuna bakın:

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

Yukarıdaki değişiklik sorunu çözmelidir, run.shaşağıdaki komut dosyasını kullanmanın bu sorunu çözebileceği başka bir yol vardır , ancak IntelliJ'de başlatılması yerine daha çok komut satırı düzeltmesi olacaktır gradle bootRun.


0

DataNucleus bazen birçok yolla Argümanların üzerine yazması nedeniyle olur.

Bunları bunun üzerine yazmalısınız:

-enhancerName ASM -api JDO -pu MediaToGo

Umarım size yardımcı olur!


0

Aynı hatayı aldım. Temizleme, yeniden oluşturma, geçersiz kılma, yeniden başlatma vb. Gibi çözümler denendi ancak hiçbir şey işe yaramıyor.

Kısa adla yeni bir klasör oluşturdum ve tüm dosyaları (uygulama klasörü, gradle dosyaları vb.) Yeni klasöre kopyaladım. Uygulama android stüdyosunda açıldı ve çalışıyor.


0

Benim durumumda hata gösteriliyordu çünkü sistem java sürümü intellijj / eclipse java sürümünden farklıydı. Sistem ve kullanıcı farklı java sürümlerine sahipti. Kodunuzu bir sürüm kullanarak derlerseniz ve farklı bir sürüm kullanarak çalıştırmayı denerseniz, hata verecektir. Kullanıcı java sürümü 1.8

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

Uzun lafın kısası, kodunuzun aynı java sürümüyle derlendiğinden ve çalıştırıldığından emin olun.


0

Bu aşağıdaki hatayı düzeltmek için yeterince araştırma yaptım, harika bir çözüm bulamadım, bu senaryoyu hazırladım ve gayet iyi çalışıyor, kamuoyuyla paylaşmayı ve onu kullanmayı düşünerek zamandan tasarruf ettim.

CreateProcess hatası = 206, Dosya adı veya uzantı çok uzun

Gradle oluşturma aracını kullanıyorsanız ve yürütülebilir dosya, uygulamanızın build / libs dizinine yerleştirilirse. run.sh-> bu dosyayı projenizin kök dizininde oluşturun ve komut dosyasının altına kopyalayın, ardından git bash'a gidin ve run.sh yazın ve girin. Bu yardımcı olur umarım!

#!/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

Bu yardımcı olur umarım!!


0

Gradle eklentilerinin eski sürümünü kullanıyorum ve bu eklenti sorunu benim için çözdü.

Kullanım (daha fazla ayrıntı için kaynağı kontrol edin):

Gradle 2.1 ve sonrası için DSL eklentileri için komut dosyası snippet'i oluşturun

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

Eski Gradle sürümlerinde veya dinamik yapılandırmanın gerekli olduğu yerlerde kullanmak için komut dosyası snippet'i oluşturun

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

Bir Windows makinesinde, aşağıdaki hata mesajını gördüğünüz için komut satırında jar dosyası adı / yol uzunluğunda bir sınırlama var, çok aradım, hatta yukarıdaki çözümü uygulamayı denedim, bir sebepten, işe yaramadı, Gradle için çalışma snippet'ini buldum (gradle-4.10.2-all.zip)

Hata:

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

gradle.buildIntelliJ veya STS'deki yukarıdaki sorunu düzeltmek veya herhangi bir şeyi gölgede bırakmak için aşağıdaki kod parçacığını kullanın.

Gradle Kodu Düzeltmesi:

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

Yukarıda kaç kişi üzgün, bu problemde aşama aşama yürütmek için bir çok eklenti var:

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

veya

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

Ama bulduğum daha iyi çözüm JVM sürecini öldürmek ve her şey yapıldı.





-1

Ben 'çalıştırdığınızda aşağıdaki hata var karınca dağıtmak '

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

Ondan önce ' karınca temizleme ' çalıştırarak düzeltildi .


2
Ya Android Studio kullanıyorsam? Ben de aynı sorunu alıyorum
portfoliobuilder

İntelliJ kullanıyorum
kn3l

-1

Android stüdyosunda da aynı hatayı aldım. IDE'de Build -> Clean Project çalıştırarak bunu çözebildim .


-1

Bunun nedeni, size CLASSPATHtamamen uzun bir süre veren uzun proje dizini adınızdır . Ya eklenen kavanozları azaltmanız gerekir CLASSPATH(yalnızca gereksiz kavanozları kaldırdığınızdan emin olun) Ya da en iyi yol proje dizinini küçültmek ve projeyi yeniden içe aktarmaktır. Bu CLASSPATH,. Benim için çalıştı.


-1

Aynı sorunu yaşadım ama bunun yerine ağ fasulyesi kullanıyordum.
Bir çözüm buldum, bu yüzden burada paylaşıyorum çünkü bunu hiçbir yerde bulamadım, bu yüzden netbeans üzerinde bu problemi yaşıyorsanız, şunu deneyin:
(netbeans'ım portekizce olduğu için isimler yanlış olabilir) Sağ tıklayın proje> özellikler > derleme> derleme> Harici VM'de derlemeyi çalıştır seçeneğinin işaretini kaldırın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.