2015-05-22 3 views
4

Я обновил войну java при открытой смене и после обновления приложение не запустится. Когда я посмотрел на файл журнала jbossews Я нашел этот вопрос, но я не могу дублировать его вне OpenShift. Это WOKING штраф на коте локально.OpenShift Tomcat Обработка Аннотации Ошибка Развертывание войны

я получаю серию ошибок обработки, пока приложение не запускается из кучи пространства:

May 22, 2015 12:04:16 AM org.apache.catalina.startup.ContextConfig processAnnotationsJar 
SEVERE: Unable to process Jar entry [javassist/ByteArrayClassPath.class] from Jar [jar:jndi:/localhost/cope/WEB-INF/lib/javassist-3.19.0-GA.jar!/] for annotations 
java.io.EOFException 
    at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:340) 
    at org.apache.tomcat.util.bcel.classfile.Utility.swallowMethodParameters(Utility.java:797) 
    at org.apache.tomcat.util.bcel.classfile.Attribute.readAttribute(Attribute.java:171) 
    at org.apache.tomcat.util.bcel.classfile.FieldOrMethod.<init>(FieldOrMethod.java:57) 
    at org.apache.tomcat.util.bcel.classfile.Method.<init>(Method.java:71) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.readMethods(ClassParser.java:267) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:127) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2058) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1934) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1900) 
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1885) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1317) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:876) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:374) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083) 
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

Это продолжается до следующего:

May 22, 2015 12:04:17 AM org.apache.catalina.startup.HostConfig deployWARs 
SEVERE: Error waiting for multi-thread deployment of WAR files to complete 
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space 
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:188) 
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:818) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488) 
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1614) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:330) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402) 
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:347) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1140) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:799) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.OutOfMemoryError: Java heap space 

Что я здесь отсутствует ??

ответ

6

Итак, чтобы ответить на мой вопрос, проблема связана с последней версией javassist. Мы обновились до последней версии как часть последнего обновления, 3.19.0, и похоже, что он несовместим с Tomcat на OpenShift. После того, как я отказался от версии 3.17.1, все было в порядке.

Как и любой персонал OpenShift, это действительно поможет, если на страницах поддержки OpenShift можно выделить такие проблемы. Javassist 3.19.0 был вокруг в течение 5 месяцев на мавена, и я не могу себе представить, что мы были первыми столкнулись с этой проблемой.

0

Глядя на этом сообщении «jar:jndi:/localhost/cope/WEB-INF/lib/javassist-3.19.0-GA.jar!/»

Кажется, проблема с вашими классами. Используйте относительный путь вместо абсолютного пути. Напр. /lib/javassist-3.19.0-GA.jar

+0

Разве это не управляется OpenShift контейнер, когда он развертывает ВОЙНУ? Банку упакован в файл WAR. – Zoran

4

Данная проблема подтверждена исправлена ​​в the Tomcat 7.0.56 changelog.

Смотрите этот вопрос подробнее: Tomcat 7 Annotation scanner and JDK 8 with -parameters compiler flag exceptions

Javassist 3.19.0 используется java8 компилятор аргумент -parameters

+0

Javassist фиксированные [см] (https: // GitHub.com/jboss-javassist/javassist/pull/54) – wuwen

1

Для моего проекта я исправила эту проблему за счет исключения:

Это может помочь вам.

 <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>5.1.0.Final</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.javassist</groupId> 
        <artifactId>javassist</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
0

Найти зависимость, которые требуют org.javassist

mvn dependency:tree шоу (например, весна-загрузки стартер-thymeleaf)

[INFO] \- org.springframework.boot:spring-boot-starter-thymeleaf:jar:1.4.1.RELEASE:compile 
[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.javassist:javassist:jar:3.20.0-GA:compile (version managed from 3.16.1-GA) 
[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 (version managed from 2.4.3) 

что зависимость приходит форма spring-boot-starter-thymeleaf исключить его и добавить зависимость с версии поддерживается ваша окружающая среда

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    <exclusions> 
     <exclusion> 
      <groupId>org.javassist</groupId> 
      <artifactId>javassist</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
<dependency> 
    <groupId>org.javassist</groupId> 
    <artifactId>javassist</artifactId> 
    <version>3.17.1-GA</version> 
</dependency> 

Тест, если он отлично работает с пониженной версией.

0

Вы можете добавить кусочки для сканирования в сканирование. Просто зайдите в файл «catalina.properties» в путь nameRepository/.openshift/config/вашего репозитория. И searh раздел tomcat.util.scan.DefaultJarScanner.jarsToSkip

в финале этого раздела добавьте имя вашей баночки, например javassist-*.jar

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