2016-07-22 151 views
0

我目前正在将我们后端的一些代码部分重构为java 8流。在这里我使用lambda的。IDE无法运行弹簧引导无效常量类型18

当我尝试当我使用Maven构建它工作正常,只有当我运行里面的IntelliJ它崩溃的应用程序运行的代码来运行我的IDE中的应用程序,我收到以下错误

。我读过其他地方可能是我的javassist。我试图排除这些从我使用其他的依赖关系,但没有结果:( 另一个话题说我已经把hamcrest依赖于聚甲醛的顶部,没有工作,要么..

我失去了什么?

Caused by: java.lang.RuntimeException: Error while reading file:/...path to project/target/classes/ 
    at org.hibernate.ejb.packaging.NativeScanner.getFilesInJar(NativeScanner.java:195) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    at org.hibernate.ejb.Ejb3Configuration.addScannedEntries(Ejb3Configuration.java:506) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:861) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    ... 23 common frames omitted 
Caused by: java.io.IOException: invalid constant type: 18 
    at javassist.bytecode.ConstPool.readOne(ConstPool.java:1113) ~[javassist-3.15.0-GA.jar:na] 
    at javassist.bytecode.ConstPool.read(ConstPool.java:1056) ~[javassist-3.15.0-GA.jar:na] 
    at javassist.bytecode.ConstPool.<init>(ConstPool.java:150) ~[javassist-3.15.0-GA.jar:na] 
    at javassist.bytecode.ClassFile.read(ClassFile.java:765) ~[javassist-3.15.0-GA.jar:na] 
    at javassist.bytecode.ClassFile.<init>(ClassFile.java:109) ~[javassist-3.15.0-GA.jar:na] 
    at org.hibernate.ejb.packaging.AbstractJarVisitor.checkAnnotationMatching(AbstractJarVisitor.java:246) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    at org.hibernate.ejb.packaging.AbstractJarVisitor.executeJavaElementFilter(AbstractJarVisitor.java:212) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    at org.hibernate.ejb.packaging.AbstractJarVisitor.addElement(AbstractJarVisitor.java:173) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:126) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:134) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:134) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:134) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    at org.hibernate.ejb.packaging.ExplodedJarVisitor.doProcessElements(ExplodedJarVisitor.java:92) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    at org.hibernate.ejb.packaging.AbstractJarVisitor.getMatchingEntries(AbstractJarVisitor.java:149) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    at org.hibernate.ejb.packaging.NativeScanner.getFilesInJar(NativeScanner.java:192) ~[hibernate-entitymanager-4.2.8.Final.jar:4.2.8.Final] 
    ... 25 common frames omitted 

我POM:

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.0.BUILD-SNAPSHOT</version> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 

</properties> 

<repositories> 
... 
</repositories> 
<pluginrepositories> 
... 
</pluginrepositories> 

<dependencies> 
    <dependency> 
     <groupId>org.powermock</groupId> 
     <artifactId>powermock-api-mockito</artifactId> 
     <version>1.6.4</version> 
     <scope>test</scope> 
     <exclusions> 
      <exclusion> 
       <artifactId>javassist</artifactId> 
       <groupId>org.javassist</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <dependency> 
     <groupId>org.powermock</groupId> 
     <artifactId>powermock-module-junit4</artifactId> 
     <version>1.6.4</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.hamcrest</groupId> 
     <artifactId>hamcrest-all</artifactId> 
     <version>1.3</version> 
     <scope>test</scope> 
     <exclusions> 
      <exclusion> 
       <artifactId>javassist</artifactId> 
       <groupId>org.javassist</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok</artifactId> 
     <version>1.16.6</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     <version>1.3.5.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <version>1.3.5.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.codehaus.sonar-plugins.java</groupId> 
     <artifactId>sonar-jacoco-listeners</artifactId> 
     <version>1.2</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>javax.transaction</groupId> 
     <artifactId>jta</artifactId> 
     <version>1.1</version> 
    </dependency> 
    <!-- http://mvnrepository.com/artifact/org.postgresql/postgresql --> 
    <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>9.4.1208</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.2.8.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.2.8.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.javassist</groupId> 
     <artifactId>javassist</artifactId> 
     <version>3.20.0-GA</version> 
    </dependency> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.projectlombok</groupId> 
      <artifactId>lombok-maven-plugin</artifactId> 
      <version>1.16.6.1</version> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>delombok</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

我的依赖关系树:

[INFO] +- org.powermock:powermock-api-mockito:jar:1.6.4:test 
[INFO] | +- org.mockito:mockito-core:jar:1.10.19:test 
[INFO] | | \- org.objenesis:objenesis:jar:2.1:test 
[INFO] | +- org.hamcrest:hamcrest-core:jar:1.3:test 
[INFO] | \- org.powermock:powermock-api-support:jar:1.6.4:test 
[INFO] |  +- org.powermock:powermock-core:jar:1.6.4:test 
[INFO] |  \- org.powermock:powermock-reflect:jar:1.6.4:test 
[INFO] +- org.powermock:powermock-module-junit4:jar:1.6.4:test 
[INFO] | +- junit:junit:jar:4.12:test 
[INFO] | \- org.powermock:powermock-module-junit4-common:jar:1.6.4:test 
[INFO] +- org.hamcrest:hamcrest-all:jar:1.3:test 
[INFO] +- org.projectlombok:lombok:jar:1.16.6:compile 
[INFO] +- org.springframework.boot:spring-boot-starter-thymeleaf:jar:1.3.5.RELEASE:compile 
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:1.4.0.BUILD-SNAPSHOT:compile 
[INFO] | | +- org.springframework.boot:spring-boot:jar:1.4.0.BUILD-SNAPSHOT:compile 
[INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.4.0.BUILD-SNAPSHOT:compile 
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:1.4.0.BUILD-SNAPSHOT:compile 
[INFO] | | | +- ch.qos.logback:logback-classic:jar:1.1.7:compile 
[INFO] | | | | \- ch.qos.logback:logback-core:jar:1.1.7:compile 
[INFO] | | | +- org.slf4j:jul-to-slf4j:jar:1.7.21:compile 
[INFO] | | | \- org.slf4j:log4j-over-slf4j:jar:1.7.21:compile 
[INFO] | | \- org.yaml:snakeyaml:jar:1.17:runtime 
[INFO] | +- org.thymeleaf:thymeleaf-spring4:jar:2.1.5.RELEASE:compile 
[INFO] | | +- org.thymeleaf:thymeleaf:jar:2.1.5.RELEASE:compile 
[INFO] | | | +- ognl:ognl:jar:3.0.8:compile 
[INFO] | | | \- org.unbescape:unbescape:jar:1.1.0.RELEASE:compile 
[INFO] | | \- org.slf4j:slf4j-api:jar:1.7.21:compile 
[INFO] | \- nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:jar:1.4.0:compile 
[INFO] |  \- org.codehaus.groovy:groovy:jar:2.4.7:compile 
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.3.5.RELEASE:compile 
[INFO] | +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.4.0.BUILD-SNAPSHOT:compile 
[INFO] | | +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.5.4:compile 
[INFO] | | +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.5.4:compile 
[INFO] | | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.5.4:compile 
[INFO] | +- org.springframework.boot:spring-boot-starter-validation:jar:1.4.0.BUILD-SNAPSHOT:compile 
[INFO] | | \- org.hibernate:hibernate-validator:jar:5.2.4.Final:compile 
[INFO] | |  +- javax.validation:validation-api:jar:1.1.0.Final:compile 
[INFO] | |  \- com.fasterxml:classmate:jar:1.3.1:compile 
[INFO] | +- org.springframework:spring-web:jar:4.3.2.BUILD-SNAPSHOT:compile 
[INFO] | | +- org.springframework:spring-aop:jar:4.3.2.BUILD-SNAPSHOT:compile 
[INFO] | | +- org.springframework:spring-beans:jar:4.3.2.BUILD-SNAPSHOT:compile 
[INFO] | | \- org.springframework:spring-context:jar:4.3.2.BUILD-SNAPSHOT:compile 
[INFO] | \- org.springframework:spring-webmvc:jar:4.3.2.BUILD-SNAPSHOT:compile 
[INFO] |  \- org.springframework:spring-expression:jar:4.3.2.BUILD-SNAPSHOT:compile 
[INFO] +- org.codehaus.sonar-plugins.java:sonar-jacoco-listeners:jar:1.2:test 
[INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:1.4.0.BUILD-SNAPSHOT:compile 
[INFO] | +- org.springframework.boot:spring-boot-starter-aop:jar:1.4.0.BUILD-SNAPSHOT:compile 
[INFO] | | \- org.aspectj:aspectjweaver:jar:1.8.9:compile 
[INFO] | +- org.springframework.boot:spring-boot-starter-jdbc:jar:1.4.0.BUILD-SNAPSHOT:compile 
[INFO] | | +- org.apache.tomcat:tomcat-jdbc:jar:8.5.4:compile 
[INFO] | | | \- org.apache.tomcat:tomcat-juli:jar:8.5.4:compile 
[INFO] | | \- org.springframework:spring-jdbc:jar:4.3.2.BUILD-SNAPSHOT:compile 
[INFO] | +- javax.transaction:javax.transaction-api:jar:1.2:compile 
[INFO] | +- org.springframework.data:spring-data-jpa:jar:1.10.2.RELEASE:compile 
[INFO] | | +- org.springframework.data:spring-data-commons:jar:1.12.2.RELEASE:compile 
[INFO] | | +- org.springframework:spring-orm:jar:4.3.2.BUILD-SNAPSHOT:compile 
[INFO] | | +- org.springframework:spring-tx:jar:4.3.2.BUILD-SNAPSHOT:compile 
[INFO] | | \- org.slf4j:jcl-over-slf4j:jar:1.7.21:compile 
[INFO] | \- org.springframework:spring-aspects:jar:4.3.2.BUILD-SNAPSHOT:compile 
[INFO] +- javax.transaction:jta:jar:1.1:compile 
[INFO] +- org.postgresql:postgresql:jar:9.4.1208:compile 
[INFO] +- org.hibernate:hibernate-core:jar:4.2.8.Final:compile 
[INFO] | +- antlr:antlr:jar:2.7.7:compile 
[INFO] | +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile 
[INFO] | +- dom4j:dom4j:jar:1.6.1:compile 
[INFO] | +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.1.Final:compile 
[INFO] | +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile 
[INFO] | \- org.hibernate.common:hibernate-commons-annotations:jar:4.0.2.Final:compile 
[INFO] +- org.hibernate:hibernate-entitymanager:jar:4.2.8.Final:compile 
[INFO] +- org.javassist:javassist:jar:3.20.0-GA:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.6.5:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.0:compile 
[INFO] | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.0:compile 
[INFO] +- com.fasterxml:jackson-xml-databind:jar:0.6.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.2:compile 
[INFO] | | \- org.codehaus.jackson:jackson-core-asl:jar:1.9.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-xc:jar:1.9.2:compile 
[INFO] | \- org.codehaus.woodstox:stax2-api:jar:3.1.0:compile 
[INFO] |  \- javax.xml.stream:stax-api:jar:1.0-2:compile 
[INFO] +- com.mashape.unirest:unirest-java:jar:1.4.9:compile 
[INFO] +- org.apache.httpcomponents:httpclient:jar:4.3.6:compile 
[INFO] | +- org.apache.httpcomponents:httpcore:jar:4.4.5:compile 
[INFO] | \- commons-codec:commons-codec:jar:1.10:compile 
[INFO] +- org.apache.httpcomponents:httpasyncclient:jar:4.0.2:compile 
[INFO] | \- org.apache.httpcomponents:httpcore-nio:jar:4.3.2:compile 
[INFO] +- org.apache.httpcomponents:httpmime:jar:4.3.6:compile 
[INFO] +- org.json:json:jar:20140107:compile 
[INFO] +- org.webjars:bootstrap:jar:3.3.6:compile 
[INFO] | \- org.webjars:jquery:jar:1.11.1:compile 
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:1.4.0.BUILD-SNAPSHOT:test 
[INFO] | +- org.springframework.boot:spring-boot-test:jar:1.4.0.BUILD-SNAPSHOT:test 
[INFO] | +- org.springframework.boot:spring-boot-test-autoconfigure:jar:1.4.0.BUILD-SNAPSHOT:test 
[INFO] | +- com.jayway.jsonpath:json-path:jar:2.2.0:test 
[INFO] | | \- net.minidev:json-smart:jar:2.2.1:test 
[INFO] | |  \- net.minidev:accessors-smart:jar:1.1:test 
[INFO] | |  \- org.ow2.asm:asm:jar:5.0.3:test 
[INFO] | +- org.assertj:assertj-core:jar:2.4.1:test 
[INFO] | +- org.hamcrest:hamcrest-library:jar:1.3:test 
[INFO] | +- org.skyscreamer:jsonassert:jar:1.3.0:test 
[INFO] | +- org.springframework:spring-core:jar:4.3.2.BUILD-SNAPSHOT:compile 
[INFO] | \- org.springframework:spring-test:jar:4.3.2.BUILD-SNAPSHOT:test 
[INFO] +- commons-io:commons-io:jar:2.4:test 
+0

对于初学者停止搅拌你混合1.4.0和1.3.5不这样做,春天启动的版本。同样,为了管理hibernate版本,只需在你的pom的''块中放入一个'',并带有所需的版本。同样删除为您管理的'javasssist'依赖项,您将获得正确的版本。 –

回答

1

当你管理Spring Boot已经管理的东西时,你的pom会有点混乱。除此之外,你正在混合一个你永远不应该做的框架的2个版本(不管框架)。

  1. 不要混合使用1.3.5和1.4.0版本春季启动
  2. 春天启动的罐子来管理休眠只是定义要使用的版本。
  3. 我更喜欢测试依赖关系来最后(并建议使用spring-boot-starter-test依赖关系,因为它也管理依赖关系)。
  4. 删除休眠和javassist依赖关系(因为这些依赖项为您管理)
  5. 我建议使用Mockito而不是Powermock(但这是imho和个人偏好)。
  6. Spring Boot还管理postgres版本,因此您可以删除版本标记(以及从您拥有的spring-boot依赖项)。

你的pom应该看起来像这样。

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 
    <hibernate.version>4.2.8.Final</hibernate.version> 
    <powermock.version>1.6.4</powermock.version> 
</properties> 

然后在您的依赖项中进行一些清理。

<dependency> 
    <groupId>org.projectlombok</groupId> 
    <artifactId>lombok</artifactId> 
    <version>1.16.6</version> 
</dependency> 

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-thymeleaf</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-data-jpa</artifactId> 
</dependency> 

<!-- http://mvnrepository.com/artifact/org.postgresql/postgresql --> 
<dependency> 
    <groupId>org.postgresql</groupId> 
    <artifactId>postgresql</artifactId>   
</dependency> 

<!-- Dependencies for Test --> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-test</artifactId> 
    <scope>test</scope> 
</dependency> 
<dependency>  
    <groupId>org.codehaus.sonar-plugins.java</groupId> 
    <artifactId>sonar-jacoco-listeners</artifactId> 
    <version>1.2</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.powermock</groupId> 
    <artifactId>powermock-api-mockito</artifactId> 
    <version>${powermock.version}</version> 
    <scope>test</scope> 
</dependency> 

<dependency> 
    <groupId>org.powermock</groupId> 
    <artifactId>powermock-module-junit4</artifactId> 
    <version>${powermock.version}</version> 
    <scope>test</scope> 
</dependency> 

相关问题