'u çözüyor Bu bana ve tüm takım arkadaşlarıma bir noktada başlıyor ve bunun ne olduğunu ve bunun nasıl çözüleceğini anlayamıyoruz.
Çalışma alanlarımızda hepimiz aynı Java projelerine sahibiz. Project
menüsünde hepimizin Build automatically
işaretli olması.
Çalışma alanımın derleme hataları olmadığını varsayalım. Java sınıflarından birine önemsiz bir değişiklik yapıyorum, kaydediyorum, Eclipse yeniden inşa etmeye başlar ve sonuç olarak yüzlerce sınıf - birden fazla projede - derleme hataları var. Bazı nedenlerden dolayıifadesinin çoğu artık hatasını gösteriyor. İçe aktarma [xxx], çözümlenemiyor.
Ancak import
s (ve bu konuyla ilgili tüm çalışma alanı), önemsiz, tamamen ilgisiz değişiklikimi kaydetmeden önce kusursuz bir şekilde hatasız oldular ve hepsi bu noktada mükemmel bir hataya geri dönüyorlarsa, Project/Clean
tabiki bir çalışma alanının yeniden oluşturulmasını tetikler. Çalışma alanı klasöründe yer alan .log
dosyası hiçbir şey göstermez; kaydetmeden önce boşsa, kaydetmemden sonra bu hatalar hala boş görünüyor. Bütün çalışma alanını inşa dakika sürebilir çünküEclipse Mars, kaydetmeden sonra sürekli olarak ithalatı çözümlemede başarısız oluyor, ancak projeleri tek başına temizlemek
Bu, bu gelebilir yol daha rahatsız edici olduğunu ve sadece Project/Clean
beri tüm yine bu bizim kodunda yanlış bir şey nedeniyle olamaz import
s çalışmalarını başarısız kılar.
Bunun uzun bir atış olduğunu biliyorum, ancak bu konunun bizim için ne kadar tekrarlanabilir olduğunu düşünerek (bazı bilgisayarların% 100'ünde% 100'ü) belki de başka biri aynı soruna sahipti ve nedenini ya da çözümünü keşfetti.
sürümüdür Biz gradlew.bat
işaret Dış Aracı Yapılandırmalarınız oluşturarak Gradle (2.6) kullanan Web Geliştiriciler,
Windows 8 üzerinde Mars.1 Release (4.5.1), için Eclipse Java EE IDE ve bir dize ile. Bunları, Eclipse'e aktardıktan sonra (dize satırına eclipse
girerek) ve dağıtıma yönelik JAR'ları oluşturmak için (el ile build
dize komut satırına girerek) projeyi yapılandırmak için el ile çalıştırıyoruz, ancak Gradle'ın Eclipse tarafından sorunlu inşa.
EKLENDİ:
İlk durum: Mevcut hiçbir hata (çünkü hangi olabilir Ben şu olur, çünkü bu sorun,% 100 tekrarlanabilir olduğunu söylemek doğru değil artık eminim Tüm projeleri temizledim ve kaydedilmemiş değişiklikler.
Düzenleyicideki bir sınıfta değişiklik yapıyorum, kaydediyorum ve bu hatalar üretir.
Bu değişikliği geri alıyorum, kaydedin ve temizleyin; bu yüzden tam olarak başlangıç durumuna geri döndüm.
Bu değişikliği yeniden yapıyorum (özdeş), ben kaydediyorum ve bu kez hataları alamıyorum.
EKLENDİ:
1) Minör ve majör sürümleri her zaman olursa olsun .class
dosya ile inşa var aynıdır: oluşturulan .class
dosyaları incelemek için javap
kullanma, ben 2 Aşağıdaki şeyleri fark hatalar veya olmadan (küçük sürüm: 0; büyük sürüm: 51). Tabii ki .class
dosya hatalar ile inşa edildiğinde hata mesajları içermediği halde hata mesajlarını içerdiği zaman hata mesajlarını içermiyor. Her iki .class
dosyalar için javap
çıkışlarını karşılaştırılması
2), yaklaşık bir çizgi kadar "sabit havuzu" bölümünde çizgileri sınıf üyeleri ve nesnelerin isimlerini gösteren (aynı olduğu f.ex Ljava/lang/String;
) içine bakın sorunlu .class
dosya
#32 = Utf8 LMyClassImpl;
ve doğru .class
dosyası olan bir sınıf my.package.MyClassImpl
, aynı fakat tam var
#32 = Utf8 Lmy.package.MyClassImpl;
Ben bu sorunla ilgisi var eminim.
EKLENDİ:Ben Java/Compiler/Building/Output folder
altında Eclipse tercihlerinde onay kutusunu “başkaları tarafından modifiye sınıf dosyaları yeniden” kene varsa sorun kaybolur. En azından, belirli bir değişikliğin problemi gösterdiği tüm durumlar artık gösterilmiyor. Bu yalnızca bir çözümdür ve kök nedenini araştırmaya devam ediyorum, ancak bu sorun büyük bir rol oynamaktadır. Eclipse’s internal Java compiler bu sorunda önemli bir rol oynamaktadır.
EKLENDİ: Aşağıda projelerin ikisinin .classpath
ve .project
dosyaların içeriğidir. İlk proje bu derleme hatalarını gösteren bir projedir. İkinci proje asla yapmayan bir şey. 30.000 karakter sınırlaması nedeniyle tek bir dosyada ....
ile birçok satırı değiştirmek zorunda kaldım ve nasıl dosya ekleyeceğimi göremiyorum; Buna izin verilirse ve birisi bana bunu nasıl yapacağımı gösterirse, bunları kesinti olmadan iliştiririm ve içeriğinden soruları kaldırırım.
Not ilk .classpath
bir girdi excluding="**/*.class"
sahiptir ve ikinci yapmaz ilginç farkı. Ancak ben de (onların excluded:**/*.class
çıkan .classpath
dosyaları kaldırarak bu girdiyi var ama derleme hataları zaten görünmüyor Eclipse (Proje Özellikleri/Java Build Path/Kaynak) aracılığıyla buna sahip tüm projelerin Java Build yol değiştirdiğinizde Eclipse'i yeniden başlattıktan sonra). Ben tam tersini yaparsanız bu girdiyi ancak derleme hataları halen görülüyor olsun o zaman tüm projelerin .classpath
dosyaları (yani bu yok tüm projelere excluded:**/*.class
ekleyin). Bunun problemi çözeceğine bahse girerdim ama olmaz.
MyProjectThatGetsErrors
: .project
dosyası:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MyProjectThatGetsErrors</name>
<comment/>
<projects/>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments/>
</buildCommand>
</buildSpec>
<linkedResources/>
</projectDescription>
MyProjectThatGetsErrors
: .classpath
dosyası:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="**/*.class" kind="src" path="src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="src" path="/MyUtilsProject1"/>
<classpathentry kind="src" path="/MyUtilsProject2"/>
<classpathentry kind="lib" path="C:/Users/Me/.gradle/caches/modules-2/files-2.1/org.eclipse.jetty/jetty-io/8.1.15.v20140411/8849cf59187275366cd05f37b2fb71319291370b/jetty-io-8.1.15.v20140411.jar" sourcepath="C:/Users/Me/.gradle/caches/modules-2/files-2.1/org.eclipse.jetty/jetty-io/8.1.15.v20140411/49fd78caf4ca0c7cdbc532fc48ff46183bb8fb62/jetty-io-8.1.15.v20140411-sources.jar"/>
....
....
<classpathentry kind="lib" path="D:/EclipseMars/git/MyProjectThatGetsErrors/lib/tapestry5-highcharts-1.2.0.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
MyUtilsProject1
: .project
dosyası:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MyUtilsProject1</name>
<comment/>
<projects/>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments/>
</buildCommand>
</buildSpec>
<linkedResources/>
</projectDescription>
MyUtilsProject1
: .classpath
dosyası:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-digester/commons-digester/1.8/dc6a73fdbd1fa3f0944e8497c6c872fa21dca37e/commons-digester-1.8.jar" sourcepath="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-digester/commons-digester/1.8/6c296de7dc352e0af9a40f92f5af995314d41fc9/commons-digester-1.8-sources.jar"/>
<classpathentry kind="lib" path="C:/Users/Me/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.3.2/90a3822c38ec8c996e84c16a3477ef632cbc87a3/commons-lang3-3.3.2.jar" sourcepath="C:/Users/Me/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.3.2/d2a489573c0ed2c4942b3660decad5d65087b406/commons-lang3-3.3.2-sources.jar"/>
<classpathentry kind="lib" path="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-configuration/commons-configuration/1.6/32cadde23955d7681b0d94a2715846d20b425235/commons-configuration-1.6.jar" sourcepath="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-configuration/commons-configuration/1.6/2d24067548bf9022d03cfd6ca302e1f6c5d4936/commons-configuration-1.6-sources.jar"/>
<classpathentry kind="lib" path="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-fileupload/commons-fileupload/1.2/a10c06183fe21f3bb3dda3b5946b93db6e2ad5cc/commons-fileupload-1.2.jar" sourcepath="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-fileupload/commons-fileupload/1.2/c7859b375ae5bc1b4a4f2b91ce6d1d387e676e61/commons-fileupload-1.2-sources.jar"/>
<classpathentry kind="lib" path="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-beanutils/commons-beanutils-core/1.8.0/175dc721f87e4bc5cc0573f990e28c3cf9117508/commons-beanutils-core-1.8.0.jar"/>
<classpathentry kind="lib" path="C:/Users/Me/.gradle/caches/modules-2/files-2.1/org.apache.velocity/velocity/1.7/2ceb567b8f3f21118ecdec129fe1271dbc09aa7a/velocity-1.7.jar" sourcepath="C:/Users/Me/.gradle/caches/modules-2/files-2.1/org.apache.velocity/velocity/1.7/eb11eb70171ed64842b2e5216d5904e21ed162ac/velocity-1.7-sources.jar"/>
<classpathentry kind="lib" path="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-collections/commons-collections/3.2.1/761ea405b9b37ced573d2df0d1e3a4e0f9edc668/commons-collections-3.2.1.jar" sourcepath="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-collections/commons-collections/3.2.1/fa095ef874374e5b2a11f8b06c26a5d68c7cb3a4/commons-collections-3.2.1-sources.jar"/>
<classpathentry kind="lib" path="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-beanutils/commons-beanutils/1.7.0/5675fd96b29656504b86029551973d60fb41339b/commons-beanutils-1.7.0.jar" sourcepath="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-beanutils/commons-beanutils/1.7.0/b68c4fc66026e8c08df7fb57c7dc1e94a6ed8cbb/commons-beanutils-1.7.0-sources.jar"/>
<classpathentry kind="lib" path="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-lang/commons-lang/2.4/16313e02a793435009f1e458fa4af5d879f6fb11/commons-lang-2.4.jar" sourcepath="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-lang/commons-lang/2.4/2b8c4b3035e45520ef42033e823c7d33e4b4402c/commons-lang-2.4-sources.jar"/>
<classpathentry kind="lib" path="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.1.1/5043bfebc3db072ed80fbd362e7caf00e885d8ae/commons-logging-1.1.1.jar" sourcepath="C:/Users/Me/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.1.1/f3f156cbff0e0fb0d64bfce31a352cce4a33bc19/commons-logging-1.1.1-sources.jar"/>
<classpathentry kind="lib" path="D:/EclipseMars/git/MyUtilsProject1/lib/MyCompany cayenne-client-3.0.2.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
EKLENDİ: farklı bir Git dalına geçiş veya tabii bu derleme hatası görünmesine neden olan benim çalışma alanı içine değişiklikleri çekin bazen Eclipse Java Builder bir NullPointerException
ilgili bir hata iletişim kutusu gösterir ve bu durumda o (aşağıya stacktrace bakınız) günlüğüne yazmak yapar. Ancak, bu hataların ortaya çıktığı zamanların% 99'u böyle bir boş gösterici değildir.
!ENTRY org.eclipse.core.resources 4 75 2015-11-10 13:51:31.544
!MESSAGE Errors occurred during the build.
!SUBENTRY 1 org.eclipse.jdt.core 4 75 2015-11-10 13:51:31.544
!MESSAGE Errors running builder 'Java Builder' on project 'MyProject'.
!STACK 0
java.lang.NullPointerException
at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding$2.compare(ReferenceBinding.java:92)
at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding$2.compare(ReferenceBinding.java:1)
at java.util.TimSort.binarySort(TimSort.java:265)
at java.util.TimSort.sort(TimSort.java:208)
at java.util.Arrays.sort(Arrays.java:727)
at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.sortFields(ReferenceBinding.java:217)
at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.fields(BinaryTypeBinding.java:946)
at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.fields(ParameterizedTypeBinding.java:458)
at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.getField(ParameterizedTypeBinding.java:643)
at org.eclipse.jdt.internal.compiler.lookup.Scope.findField(Scope.java:1371)
at org.eclipse.jdt.internal.compiler.ast.FieldDeclaration.resolve(FieldDeclaration.java:194)
at org.eclipse.jdt.internal.compiler.lookup.FieldBinding.constant(FieldBinding.java:215)
at org.eclipse.jdt.internal.compiler.lookup.FieldBinding.constant(FieldBinding.java:240)
at org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference.getOtherFieldBindings(QualifiedNameReference.java:729)
at org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference.resolveType(QualifiedNameReference.java:1079)
at org.eclipse.jdt.internal.compiler.ast.ReturnStatement.resolve(ReturnStatement.java:341)
at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:641)
at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:309)
at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:551)
at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1188)
at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1301)
at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:590)
at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:861)
at org.eclipse.jdt.internal.compiler.ProcessTaskManager.run(ProcessTaskManager.java:141)
at java.lang.Thread.run(Thread.java:744)
Eğer örneğin ikinci, dış inşa aracı, kullanıyorsunuz Maven? –
@CedricReichenbach İyi bir nokta, sadece sorunun altındaki bu bilgi eklendi, ben yapmış gerektiğini başından beri. Maven'in Eclipse tarafından tetiklenen sorunlu yapıya karıştığından emin değilim, ama kesinlikle olabilirdi ve kesinlikle emin olmalıyım ki, yine de söylemeliyim. – SantiBailors
Tamam, benzer bir sorun var gibi görünüyor. Ne gözlemledim: Hatalar sadece yeni kaydettiğim dosyalarda görünür ve başarısız olan tüm bağımlılıklarım kendi projelerimin içindeki sınıflara işaret eder (yapı kapsamında). Bu nedenle, Eclipse muhtemelen her seferinde bir dosyayı otomatik olarak derler ve bazı nedenlerden ötürü diğerlerinin zaten oluşturulduğunu düşünür, ancak bu sınıf dosyaları ya var olmayan ya da uyumsuzdur. Gradle ve Eclipse'de kullanılan Java sürümlerini karşılaştırdınız mı? –