Pengecualian selama debug di NetBeans

Saya memiliki proyek gradle dengan dependensi berikut:

    compile "commons-codec:commons-codec:+"
    compile "commons-io:commons-io:+"
    compile "org.apache.poi:poi:+"
    compile "commons-logging:commons-logging:+"
    compile "net.sourceforge.cssparser:cssparser:+"
    compile "net.sourceforge.htmlunit:htmlunit:+"
    compile "net.sourceforge.htmlunit:htmlunit-core-js:+"
    compile "net.sourceforge.htmlunit:neko-htmlunit:+"
    compile "org.apache.commons:commons-lang3:+"
    compile "org.apache.httpcomponents:httpclient:+"
    compile "org.apache.httpcomponents:httpmime:+"
    compile "org.eclipse.jetty.websocket:websocket-client:+"
    compile "xalan:xalan:+"
    compile "org.apache.poi:poi:+"
    compile "org.apache.poi:poi-ooxml:+"
    compile "org.apache.cassandra:cassandra-all:+"
    compile "org.apache.cassandra:cassandra-thrift:+"
   compile "com.whalin:Memcached-Java-Client:+"
   compile "org.hibernate:hibernate-gradle-plugin:+"
   compile "org.hibernate:hibernate-core:+"
   compile "org.hibernate:hibernate-tools:+"
   compile "org.hibernate:hibernate-entitymanager:+"
   compile "org.hibernate:hibernate:+"
   compile "org.hibernate:hibernate-annotations:+"
   compile "mysql:mysql-connector-java:+"
   compile "org.hibernate:ejb3-persistence:+"
   compile "javax:javaee-api:+"
   compile "javax.persistence:persistence-api:+"
   compile "javassist:javassist:+"

Saya tidak bisa menjalankannya dalam mode debug menggunakan NetBeans IDE, ketika saya mencoba, saya mendapat pengecualian berikut:

18:54:28.174 [main] DEBUG o.h.cfg.annotations.PropertyBinder - Building property year_end
Exception in thread "main" java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
    at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:1106)

Mengapa?

Pertanyaan saya unik karena bukan tentang kompilasi. Program saya dapat dikompilasi dengan baik dengan kode (gradle) berikut:

task compileJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Applic version 0.9',
            'Implementation-Version': version,
            'Main-Class': 'com.company.runfile'
    }
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA' 
}

Ini menciptakan file jar yang berjalan dengan baik, tapi saya tidak bisa men-debug aplikasi yang sama di NetBeans (juga di Intellij IDEA).


person Ekaterina Ivanova iceja.net    schedule 15.03.2017    source sumber
comment
Kemungkinan duplikat Mendapatkan NoSuchMethodError: javax.persistence.Table.indexes( ) saat menjalankan kueri JPA   -  person Joachim Rohde    schedule 15.03.2017


Jawaban (1)


Ada banyak jawaban di stackoverflow untuk mengatasi masalah ini.

JB Nizet telah menggali masalah ini dan memberi tahu akar permasalahan serta prosedur solusinya seperti di bawah ini:

Hibernate 4.3 adalah versi pertama yang mengimplementasikan spesifikasi JPA 2.1 (bagian dari Java EE 7). Dan diharapkan perpustakaan JPA 2.1 di classpath, bukan perpustakaan JPA 2.0. Itu sebabnya Anda mendapatkan pengecualian ini: Table.indexes() adalah atribut baru dari Tabel, diperkenalkan di JPA 2.1

Untuk lebih lanjut Anda dapat memeriksa jawaban terkait:

  1. NoSuchMethodError di javax.persistence.Table.indexes()[Ljavax/persistence/ Indeks
  2. java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[ Ljavax/persistensi/Indeks;
person SkyWalker    schedule 18.03.2017
comment
Mengapa ini dapat dikompilasi dengan baik? Saya mendapat pengecualian hanya selama upaya debug. Dan aplikasi berjalan dengan baik tanpa debug di luar IDE. Mungkin ini semacam masalah tingkatan. - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
@Catherine pengecualian waktu debug sebenarnya terjadi karena alasan lain. Ada kemungkinan beberapa rangkaian pesan sedang menunggu balasan. Ketika paket balasan diterima, notifyAll() dilakukan di manajer penerimaan yang akan membiarkan satu thread memeriksa antrian paket balasan. Jika balasannya bukan untuk thread yang sedang menunggu, maka thread tersebut akan menunggu lagi, namun tidak memberi tahu untuk memperbolehkan thread lain yang menunggu untuk memeriksa antrean balasan. Karena alasan ini, masalah ini terjadi. - person SkyWalker; 20.03.2017
comment
Terhubung ke VM target, alamat: '127.0.0.1:59507', transport: 'socket' 20 Mar 2017 18:59:23 org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core {5.2.9.Final} 20 Mar 2017 18:59:23 org.hibernate.cfg.Environment ‹clinit› INFO: HHH000206: hibernate.properties tidak ditemukan Terputus dari VM target, alamat: '127.0.0.1:59507', transport: 'socket' 20 Maret 2017 18:59:24 entitas.CarScrapperHibernateUtil ‹clinit› SEVERE: null java.lang.NoSuchMethodError: - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
Itu gagal saat berjalan di debug, tetapi berjalan dengan baik tanpa debugging. Gagal pada tahap inisialisasi Hibernate sessionFactory = new Configuration().configure().buildSessionFactory(); itu pengecualian yang berbeda sekarang: Java.lang.NoSuchMethodError: org.hibernate.annotations.common.reflection.java.JavaReflectionManager.setMetadataProvider(Lorg/hibernate/annotations/common/reflection/MetadataProvider;)V Saya tidak tahu sekarang bagaimana hal itu terjadi, saya telah mengubah dependensi gradle - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
@Catherine versi hibernasi mana yang Anda gunakan? - person SkyWalker; 20.03.2017
comment
Hibernasi Inti {5.2.9.Final} - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
apakah ada anotasi hibernate-commons di gradle Anda? - person SkyWalker; 20.03.2017
comment
kompilasi org.hibernate:hibernate-commons-annotations:+ Anda dapat melihat dependensi di postingan awal - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
hapus bagian yang ditentukan. dan membersihkan dan membangun. Semoga ini bisa menyelesaikan masalah Anda. Dari Hibernate v3.6 kelas anotasi telah digabungkan menjadi inti. Hapus saja ketergantungan pada hibernate-commons-annotations dan ini harus diselesaikan. - person SkyWalker; 20.03.2017
comment
Ini menyelesaikan masalah tetapi pengecualian: Table.indexes() bangkit kembali Saya membaca tautan Anda - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
@Catherine di setiap IDE, jenis pengecualian batas waktu ini muncul pada waktu debug karena menunggu beberapa utas untuk membalas. Seperti yang saya nyatakan sebelumnya. Itulah masalahnya. - person SkyWalker; 20.03.2017
comment
Saya telah menambahkan kompilasi org.hibernate.javax.persistence:hibernate-jpa-2.1-api:+ tetapi situasinya sama. Pengecualian yang paling penting hanya muncul selama debug - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
pengecualian batas waktu dan pengecualian nosuchmethoderror sebagian besar terjadi pada waktu debug. @Catherine - person SkyWalker; 20.03.2017