Исключение во время отладки в NetBeans

У меня есть проект Gradle со следующими зависимостями:

    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:+"

Я не могу запустить его в режиме отладки с помощью IDE NetBeans, когда я пытаюсь, я получаю следующее исключение:

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)

Почему?

Мой вопрос уникален, потому что речь идет не о компиляции. Моя программа хорошо компилируется со следующим кодом (gradle):

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' 
}

Это создает файл jar, который работает правильно, но я не могу отлаживать одно и то же приложение в NetBeans (также в Intellij IDEA).


person Ekaterina Ivanova iceja.net    schedule 15.03.2017    source источник
comment
Возможный дубликат Получение NoSuchMethodError: javax.persistence.Table.indexes( ) при выполнении запроса JPA   -  person Joachim Rohde    schedule 15.03.2017


Ответы (1)


В stackoverflow есть много ответов для решения этой проблемы.

JB Nizet уже изучил эту проблему и рассказал об основной причине и процедуре решения, как показано ниже:

Hibernate 4.3 — первая версия, реализующая спецификацию JPA 2.1 (часть Java EE 7). Таким образом, в пути к классам ожидается библиотека JPA 2.1, а не библиотека JPA 2.0. Вот почему вы получаете это исключение: Table.indexes() — это новый атрибут таблицы, введенный в JPA 2.1.

Для получения дополнительной информации вы можете проверить соответствующий ответ:

  1. NoSuchMethodError в javax.persistence.Table.indexes()[Ljavax/persistence/ Индекс
  2. java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[ Ljavax/постоянство/индекс;
person SkyWalker    schedule 18.03.2017
comment
Почему он так хорошо компилируется? Я получил исключение только во время попытки отладки. И приложение хорошо работает без отладки вне IDE. Вероятно, это какая-то проблема с градиентом. - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
Исключение времени отладки @Catherine на самом деле возникает по другой причине. Возможно, несколько потоков ожидают ответа. Когда ответный пакет получен, в диспетчере приема выполняется notifyAll(), что позволяет одному потоку проверить очередь ответных пакетов. Если ответ не для ожидавшего потока, он снова переходит в ожидание, но не уведомляет, чтобы позволить другому ожидающему потоку проверить очередь ответов. По этой причине возникает эта проблема. - person SkyWalker; 20.03.2017
comment
Подключено к целевой виртуальной машине, адрес: «127.0.0.1:59507», транспорт: «сокет» 20 марта 2017 г. 18:59:23 org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core {5.2.9.Final} 20 марта 2017 г. 18:59:23 org.hibernate.cfg.Environment ‹clinit› ИНФОРМАЦИЯ: HHH000206: hibernate.properties не найдено Отключение от целевой виртуальной машины, адрес: «127.0.0.1:59507», транспорт: «сокет» 20 марта 2017 г. 18:59:24 entity.CarScrapperHibernateUtil ‹clinit› СЕРЬЕЗНЫЙ: null java.lang.NoSuchMethodError: - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
Он терпит неудачу во время отладки, но работает хорошо без отладки. Ошибка на этапе инициализации Hibernate sessionFactory = new Configuration().configure().buildSessionFactory(); теперь это другое исключение: java.lang.NoSuchMethodError: org.hibernate.annotations.common.reflection.java.JavaReflectionManager.setMetadataProvider(Lorg/hibernate/annotations/common/reflection/MetadataProvider;) VI не знаю, как это произошло, я изменили зависимости градации - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
@Catherine, какую версию спящего режима вы используете? - person SkyWalker; 20.03.2017
comment
Hibernate Core {5.2.9.Final} - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
есть ли в вашем градиенте аннотации hibernate-commons? - person SkyWalker; 20.03.2017
comment
скомпилировать org.hibernate:hibernate-commons-annotations:+ вы можете увидеть зависимости в начальном посте - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
удалить указанную часть. и чистить и строить. Надеюсь, это решит вашу проблему. Начиная с Hibernate v3.6 классы аннотаций были объединены в ядро. Просто удалите зависимость от аннотаций hibernate-commons, и это должно быть решено. - person SkyWalker; 20.03.2017
comment
Это решает проблему, но исключение: Table.indexes() снова поднялся. Я читаю ваши ссылки. - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
@Catherine в каждой среде IDE этот тип исключения тайм-аута возникает во время отладки из-за ожидания ответа несколькими потоками. Как я уже говорил. В этом проблема. - person SkyWalker; 20.03.2017
comment
Я добавил compile org.hibernate.javax.persistence:hibernate-jpa-2.1-api:+, но ситуация та же. Что самое главное исключение возникает только во время отладки - person Ekaterina Ivanova iceja.net; 20.03.2017
comment
исключение тайм-аута и исключение nosuchmethoderror в основном происходит во время отладки. @Кэтрин - person SkyWalker; 20.03.2017