我有一个具有以下依赖关系的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:+"
我无法使用NetBeans IDE在调试模式下运行它,当我尝试时,我遇到以下异常:
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中)。
答案 0 :(得分:0)
stackoverflow中有很多答案可以解决这个问题。
JB Nizet已经挖掘了这个问题,并告诉根本原因和解决方案程序如下:
Hibernate 4.3是第一个实现JPA 2.1规范的版本(部分 Java EE 7)。因此它期待着JPA 2.1库 classpath,而不是JPA 2.0库。这就是你得到这个例外的原因: Table.indexes()是JP的新属性,在JPA 2.1中引入
您可以查看相关答案: