linux - 我无法使用 java.lang.ClassFormatError : Incompatible magic value 0 in class file 在 linux 上的 tomcat 8.0.36/8.0.24 上部署 grails 应用程序

标签 linux tomcat grails deployment tomcat8

我无法在 linux 机器上运行的 tomcat 8 上部署 grails 2.5.0 应用程序。相同的应用程序在 Windows 上运行良好。部署服务器启动时会因为某些或其他类而失败。


2016-11-29 05:09:06,234 [localhost-startStop-1] ERROR StackTrace  - Full Stack Trace:
java.lang.ClassFormatError: Incompatible magic value 0 in class file MarkdownGrailsPlugin$_closure1$_closure2
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2541)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:858)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1301)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166)
    at MarkdownGrailsPlugin$_closure1.doCall(MarkdownGrailsPlugin.groovy:59)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

发生错误的类文件的校验和与部署后我在 Windows 机器上的校验和不匹配。但是当我在 WEB-INF/classes 中添加类文件时服务器启动但是它无法加载其他资源或 GSP 编译。同样的应用程序,同样的 war 在 windows 和 linux 的 vm box 上运行良好。

JDK/JRE 甚至补丁级别在 windows、linux 机器上都是相同的。是否有任何必须增加的操作系统参数。

遇到问题的 linux 机器上 JDK/JRE 的详细信息。

29-Nov-2016 05:07:40.966 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.0.36
29-Nov-2016 05:07:40.968 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jun 9 2016 13:55:50 UTC
29-Nov-2016 05:07:40.968 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.0.36.0
29-Nov-2016 05:07:40.968 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
29-Nov-2016 05:07:40.968 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            2.6.18-416.el5
29-Nov-2016 05:07:40.969 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
29-Nov-2016 05:07:40.969 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/java/jdk1.7.0_79/jre
29-Nov-2016 05:07:40.969 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.7.0_79-b15
29-Nov-2016 05:07:40.969 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
29-Nov-2016 05:07:40.969 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /home/tomcat8/apache-tomcat-8.0.36
29-Nov-2016 05:07:40.969 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /home/tomcat8/apache-tomcat-8.0.36
29-Nov-2016 05:07:40.970 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/home/tomcat8/apache-tomcat-8.0.36/conf/logging.properties
29-Nov-2016 05:07:40.970 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
29-Nov-2016 05:07:40.970 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms2g
29-Nov-2016 05:07:40.970 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx4g
29-Nov-2016 05:07:40.971 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=1024m
29-Nov-2016 05:07:40.971 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttp.proxyHost=www-proxy.sct.com
29-Nov-2016 05:07:40.971 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttp.proxyPort=8080
29-Nov-2016 05:07:40.971 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
29-Nov-2016 05:07:40.971 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms2g
29-Nov-2016 05:07:40.971 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx4g
29-Nov-2016 05:07:40.971 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=1024m
29-Nov-2016 05:07:40.972 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttp.proxyHost=www-proxy.sct.com
29-Nov-2016 05:07:40.972 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttp.proxyPort=8080
29-Nov-2016 05:07:40.972 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote
29-Nov-2016 05:07:40.972 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.port=8999
29-Nov-2016 05:07:40.972 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.ssl=false
29-Nov-2016 05:07:40.972 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.authenticate=false
29-Nov-2016 05:07:40.972 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.rmi.server.hostname=149.24.37.131
29-Nov-2016 05:07:40.973 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.endorsed.dirs=/home/tomcat8/apache-tomcat-8.0.36/endorsed
29-Nov-2016 05:07:40.973 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/home/tomcat8/apache-tomcat-8.0.36
29-Nov-2016 05:07:40.973 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/home/tomcat8/apache-tomcat-8.0.36
29-Nov-2016 05:07:40.973 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/home/tomcat8/apache-tomcat-8.0.36/temp

相同的应用程序在 Windows 机器上运行良好

30-Nov-2016 22:17:29.007 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.0.36
30-Nov-2016 22:17:29.009 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jun 9 2016 13:55:50 UTC
30-Nov-2016 22:17:29.010 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.0.36.0
30-Nov-2016 22:17:29.011 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Windows 8.1
30-Nov-2016 22:17:29.012 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            6.3
30-Nov-2016 22:17:29.012 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
30-Nov-2016 22:17:29.013 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             C:\Program Files\Java\jdk1.7.0_79\jre
30-Nov-2016 22:17:29.013 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.7.0_79-b15
30-Nov-2016 22:17:29.014 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
30-Nov-2016 22:17:29.014 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         C:\sandbox\apache-tomcat-8.0.36
30-Nov-2016 22:17:29.015 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         C:\sandbox\apache-tomcat-8.0.36
30-Nov-2016 22:17:29.015 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=1024m
30-Nov-2016 22:17:29.016 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:PermSize=512m
30-Nov-2016 22:17:29.016 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms2048m
30-Nov-2016 22:17:29.017 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx4096m
30-Nov-2016 22:17:29.017 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -DPROXY_SERVER_NAME=<a href="http://m039220:8081/nexus/content/groups/public" rel="noreferrer noopener nofollow">http://m039220:8081/nexus/content/groups/public</a>
30-Nov-2016 22:17:29.017 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
30-Nov-2016 22:17:29.018 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\sandbox\apache-tomcat-8.0.36\conf\logging.properties
30-Nov-2016 22:17:29.019 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
30-Nov-2016 22:17:29.027 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms512m
30-Nov-2016 22:17:29.029 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx1524m
30-Nov-2016 22:17:29.035 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:PermSize=256m
30-Nov-2016 22:17:29.036 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=1024m
30-Nov-2016 22:17:29.042 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+CMSClassUnloadingEnabled
30-Nov-2016 22:17:29.049 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseConcMarkSweepGC
30-Nov-2016 22:17:29.050 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:-UseGCOverheadLimit
30-Nov-2016 22:17:29.086 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.endorsed.dirs=C:\sandbox\apache-tomcat-8.0.36\endorsed
30-Nov-2016 22:17:29.087 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\sandbox\apache-tomcat-8.0.36
30-Nov-2016 22:17:29.093 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=C:\sandbox\apache-tomcat-8.0.36
30-Nov-2016 22:17:29.095 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=C:\sandbox\apache-tomcat-8.0.36\temp
是否有任何我需要检查的 native 库或一些我需要调整的操作系统参数?

最佳答案

问题出在服务器上打开的文件上。在 VM 中,该值设置为 4096,而在我们遇到问题的服务器上,该值设置为 1024。

将打开的文件增加到 4096 个后,服务器开始工作。该应用程序似乎在 war 中有 15000 个文件。

关于linux - 我无法使用 java.lang.ClassFormatError : Incompatible magic value 0 in class file 在 linux 上的 tomcat 8.0.36/8.0.24 上部署 grails 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40987876/

相关文章:

grails - 我应该在 Grails 中使用复合主键吗?

emacs - Grails是否可以emacs格式输出错误消息?

sql - 哪种是在Grails中查询数据库的有效方法? SQL,HQL或GORM?

linux - Laravel 权限被拒绝 Centos 7

ruby-on-rails - Jruby on Rails 使用 Tomcat 进行日志记录

java - log4j 写入控制台但不写入文件(Liferay + Tomcat)

Java EE 与 MySql 的连接错误

c++ - 使用C或C++打印调用堆栈

python - OpenCV 无法在 Linux 上从超过 8 个网络摄像头进行捕获

linux - 如何读取文件中每一行的数据,并确定哪一个数据对应于 shell 脚本中的基准标记