我正在尝试在交钥匙 linux tomcat6 设备上使用轴 1.4。
简短的版本是假设它是问题的根源;在 debian 上设置 AXISCLASSPATH 的正确方法是什么?
长版是:
axis.war 正确部署。我已将 AXIS_HOME 和 AXIS_LIB 添加到 etc/environment,如下所示:
CATALINA_HOME="/usr/share/tomcat6"
CATALINA_BASE="/var/lib/tomcat6"
CATALINA_OPTS="-server -Xms384M -Xmx512M -XX:MaxPermSize=256M"
JAVA_HOME="/usr/lib/jvm/java-6-sun-1.6.0.26"
AXIS_HOME="/var/lib/tomcat6/webapps/axis"
AXIS_LIB="/var/lib/tomcat6/webapps/axis/WEB-INF/lib"
并且所有回声都正确。tomcat6 管理页面显示轴正在运行,/localhost/axis 加载正常,但happyaxis 正在启动:
HTTP 状态 500 -
类型异常报告
信息
描述 服务器遇到一个内部错误 () 阻止它完成这个请求。
例外
org.apache.jasper.JasperException:在第 45 行处理 JSP 页面 /happyaxis.jsp 时发生异常
42: */ 43: Class classExists(String classname) { 44:
try { 45: return Class.forName(classname); 46: } 捕捉 (ClassNotFoundException e) { 47: 返回 null; 48:
}堆栈跟踪:org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:521) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:412) org.apache.jasper.servlet.JspServlet.serviceJspFile( JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
根本原因
javax.servlet.ServletException:java.lang.UnsupportedClassVersionError:com/ibm/wsdl/factory/WSDLFactoryImpl:不支持的major.minor版本51.0(无法加载类com.ibm.wsdl.factory.WSDLFactoryImpl)org.apache.jasper.runtime .PageContextImpl.doHandlePageException(PageContextImpl.java:865) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:794) org.apache.jsp.happyaxis_jsp._jspService(happyaxis_jsp.java:808) org.apache.jasper .runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) org.apache .jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http。HttpServlet.service(HttpServlet.java:717)
根本原因
java.lang.UnsupportedClassVersionError:com/ibm/wsdl/factory/WSDLFactoryImpl:不支持的major.minor版本51.0(无法加载类com.ibm.wsdl.factory.WSDLFactoryImpl)org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader .java:2822) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647) org.apache.catalina.loader.WebappClassLoader .loadClass(WebappClassLoader.java:1526) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66) java.lang.Class .forName0(Native Method) java.lang.Class.forName(Class.java:169) org.apache.jsp.happyaxis_jsp.classExists(happyaxis_jsp.java:34) org.apache。jsp.happyaxis_jsp.probeClass(happyaxis_jsp.java:77) org.apache.jsp.happyaxis_jsp.needClass(happyaxis_jsp.java:151) org.apache.jsp.happyaxis_jsp._jspService(happyaxis_jsp.java:650) org.apache.jasper。 runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) org.apache。 jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)服务(HttpJspBase.java:70)javax.servlet.http.HttpServlet.service(HttpServlet.java:717)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)org.apache.jasper.servlet。 JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)服务(HttpJspBase.java:70)javax.servlet.http.HttpServlet.service(HttpServlet.java:717)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)org.apache.jasper.servlet。 JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
我过去在 ubuntu 上使用过轴,并且在使用 openjdk 时遇到了问题。所以我尝试删除 openjdk 并安装 sun-java-6 并得到同样的错误。
根据我看到的每一点文档,$AXISCLASSPATH 需要指向轴/lib .jar 文件,这可能是问题,但 apache 文档非常旧:
Unix 用户必须做类似的事情。下面我们将 AXIS 安装到 /usr/axis 并使用 bash shell。有关差异,请参阅您的 shell 文档。要使变量渗透,您需要将它们添加到 shell 的启动(点)文件中。再次,请参阅您的 shell 的文档。
set AXIS_HOME=/usr/axis set AXIS_LIB=$AXIS_HOME/lib set AXISCLASSPATH=$AXIS_LIB/axis.jar:$AXIS_LIB/commons-discovery.jar: $AXIS_LIB/commons-logging.jar:$AXIS_LIB/jaxrpc.jar:$AXIS_LIB/saaj.jar: $AXIS_LIB/log4j-1.2.8.jar:$AXIS_LIB/xml-apis.jar:$AXIS_LIB/xercesImpl.jar export AXIS_HOME; export AXIS_LIB; export AXISCLASSPATH
当我部署时,lib 目录中不存在 xercesImpl.jar,而 log4-1.2.8.jar 只是 log4j.jar
我从文件系统的其他地方复制了 xercesImpl,经过详尽的搜索后,我尝试从命令行、etc/environment、tomcat6.sh 和其他一些变量设置此变量,但均未成功。
我发现可以正确回显的唯一方法是使用命令行代码:
export AXISCLASSPATH:$AXIS_LIB/axis.jar;$AXIS_LIB/commons-discover.jar;$AXIS_LIB/commons-logging.jar;$AXIS_LIB/jaxrpc.jar;$AXIS_LIB/saaj.jar;$AXIS_LIB/log4j.jar
仍然没有变化。作为黑暗中的刺,我将 wsdl4j.jar 从文件系统的其他位置复制到 /lib 并将其添加到上述导出命令中,但仍然没有乐趣