2014-08-27 2 views
0

Использование: Gradle 2,0, Spring MVC 4.0.6, Java 8Почему задача gradle jettyRunWar не работает с java8?

У меня есть следующий build.gradle:

apply plugin: 'war' 
apply plugin: 'jetty' 
apply plugin: 'idea' 
apply plugin: 'java' 

sourceCompatibility = 1.8 
targetCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 

dependencies { 
    providedCompile 'javax.servlet:servlet-api:2.5' 
    compile 'org.springframework:spring-webmvc:4.0.6.RELEASE' 
    runtime 'javax.servlet:jstl:1.1.2' 
} 

jettyRun.contextPath = '' 

jettyRunWar.contextPath = '' 

Когда я запустить приложение jettyRun работает отлично. Но когда я бежать jettyRunWar, я получил следующую ошибку:

org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet 

Какова разница между задачами и почему второй не работает?

ответ

1

Убедитесь, что вы используете asm 5.0.1 или выше с Java 8.

Дважды проверить переходные зависимости и убедитесь, что вы переопределение asm библиотеки использования, чтобы быть более новой версии.

Это может быть то, что вам нужно ...

dependencies { 
    providedCompile 'javax.servlet:servlet-api:2.5' 
    compile 'org.springframework:spring-webmvc:4.0.6.RELEASE' 
    compile 'org.ow2.asm:asm:5.0.3' 
    runtime 'javax.servlet:jstl:1.1.2' 
} 
+0

Спасибо! После «чистой» задачи это помогло мне. Но я до сих пор не понимаю, почему 'jettyRunWar' не работал, а' jettyRun' работал. – Lunigorn

+0

Ошибка была связана с использованием библиотеки asm. Эта конкретная комбинация должна быть обновлена ​​для Java 8, так как старые библиотеки asm не могут правильно разбирать байт-код Java 8. Это не вещь Джетти вообще. –

Смежные вопросы