Java Jdk 1.7与1.6的向后兼容性

Java Jdk 1.7与1.6的向后兼容性,java,backwards-compatibility,Java,Backwards Compatibility,我有一个GWT应用程序,我想使用hudson创建一个war文件。所以我创建了一个作业,在配置中我选中了构建选项,即调用ant。因此,它使用我的应用程序中的build.xml并创建war文件。我的ant文件即build.xml包含以下目标: 1.Java编译 2.GWT编译 3.制造战争 4.使用JDK1.7.0将其部署到tomcat中 应用程序正在使用JDK1.6进行编译,并使用JDK1.7将其部署到tomcat中,但它不起作用。带有JDK1.7.0的tomcat是否与1.6兼容??或者是因为一

我有一个GWT应用程序,我想使用hudson创建一个war文件。所以我创建了一个作业,在配置中我选中了构建选项,即调用ant。因此,它使用我的应用程序中的build.xml并创建war文件。我的ant文件即build.xml包含以下目标:

1.Java编译

2.GWT编译

3.制造战争

4.使用JDK1.7.0将其部署到tomcat中

应用程序正在使用JDK1.6进行编译,并使用JDK1.7将其部署到tomcat中,但它不起作用。带有JDK1.7.0的tomcat是否与1.6兼容??或者是因为一些gwt开发人员、gwt用户JAR仍在war文件夹中,所以还有其他问题吗。在我的tomcat日志中有以下信息:

INFO: Deploying web application archive /usr/local/tomcat_lh/webapps/Nightly.war
Dec 19, 2012 10:13:41 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/usr/local/tomcat_lh/webapps/Nightly/WEB-INF/lib/gwt-dev.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Dec 19, 2012 10:13:41 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/usr/local/tomcat_lh/webapps/Nightly/WEB-INF/lib/gwt-user.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
2012年12月19日上午10:13:41 org.apache.catalina.loader.WebappClassLoader validateJarFile 信息:validateJarFile(/usr/local/tomcat\u lh/webapps/Nightly/WEB-INF/lib/javax.servlet.jar)-未加载jar。参见Servlet规范2.3,第9.7.2节。有问题的类:javax/servlet/servlet.class 2012年12月19日上午10:13:41 org.apache.catalina.core.StandardContext startInternal
严重:错误监听器开始

很可能是您做错了什么

我怀疑如果您部署到Java6,您将看到相同的问题,如果不是完全相同的错误。唯一的区别可能是在堆栈跟踪中看到不同的行号

仅供参考:Java7和Java6最新版本的代码库非常相似,甚至有许多相同的bug。e、 g.在Java7中,这是一个众所周知的bug,发布它是为了进行循环优化,人们建议在迁移之前等待修复。有趣的是,这个bug也出现在Java6中,唯一的区别是Java7中的优化默认为打开,Java6中的优化默认为关闭

顺便说一句:Java 7中的大多数性能改进都被移植到Java 6中,因此使用Java 7的唯一好理由是a)您想使用新语法b)您担心Java 6是EOL


在您的情况下,目前可能没有很好的理由使用Java 7。

错误是什么(是的,它应该可以工作)。很抱歉,我没有任何建议可以提供。我只是想说“召唤蚂蚁”让我咯咯笑了起来,让我的早晨变得明亮起来。谢谢你!检查您的JAVA_主页tomcat是否使用该版本的JAVA。@Nimchinpsky我已经编辑了我的问题。我的war正在使用jdk 1.6开发tomcat,但没有使用1.7..:(其他一切都是一样的,唯一的区别是您使用的是哪个版本的Java。您使用的是Java 7 update 10吗?如果您有早期版本的1.7.0,它可能会有bug。要编译的jdk版本是1.6_30,我正在使用jdk 1.7_04部署war的tomcat应该可以。我会尝试使用Java 7 udpate 10,以确保它不是一个补丁。)实际上,我的应用程序使用的是javaee-api-6.jar,所以当我删除jar时,它在tomcat和jdk 7上不起作用,它在jdk 7上对我起作用。谢谢你的帮助。