我必须使用JBoss 7编译Java EE项目。当我运行JBoss 7时,Netbeans会创建一个.war文件。由于我的环境问题,我必须在虚拟机上使用Tomcat6部署此.war文件。
问题是.war创建的与tomcat6不兼容。
我尝试在虚拟机上安装tomcat7,但我还有其他问题,例如" NoClassDefFoundError"。
所以我正在寻找一种在正确版本中转换.war的方法。我该怎么办?
答案 0 :(得分:1)
没有标准的方法来实现这个目标(“转换.war
文件”),因为Tomcat6(开箱即用)不是JEE认证的应用服务器 - 只是web container:
Apache Tomcat,一个Servlet和Java Server Pages容器
因此,属于真正的JEE应用程序服务器的某些库未捆绑并出现在普通Tomcat安装的/lib
文件夹中,例如JTA,JPA,CDI,JAX-RS的实现, JAX-WS ......
但是,您可以尝试下载增强型Tomcat,即TomEE,因为它是最新版本 - JEE6认证(并且有几个variants):
Apache TomEE,发音为“Tommy”,是一个全Apache Java EE 6 Web Profile认证堆栈,其中Apache Tomcat是顶级狗。
这可能是您迁移方法的一个很好的解决方案,因为JBoss7也符合JEE6级别。
在您拥有downloaded TomEE后,您可以尝试在那里部署您的应用程序。尽管如此,您应该提供完整的堆栈跟踪或至少提供未找到的Class(包括完全限定的包),因为JBoss 7中可能存在TomEE或其他应用程序服务器中不存在的某些第三方库。 / p>
希望它有所帮助。
答案 1 :(得分:0)
战争文件本身没有版本。
Java类他们自己拥有Java版本(例如,如果他们使用Java 7或Java 8)。
如果您的Tomcat在Java 6上运行并且使用Java 7编译,那么您将获得UnsupportedClassVersionError
。如果是这种情况,您必须更新Tomcat的Java版本或使用Java 6编译您的代码(并删除Java7功能)。
除此之外,您可能会使用来自JBoss 7的功能,这些功能在Tomcat 6中不可用(例如,您在应用程序中引用了Servlet 3.0,但Tomcat并没有这样做。支持该版本)。为了使其在这种情况下有效,您必须删除Tomcat不支持的所有功能。