java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC

java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC

本地环境和生产环境不同

在一个接口对接过程中,在IDEA环境中使用接口方提供的cxf客户端代码调用cxf的webservice接口,运行正常,待到去生产环境部署就会报错。

报错代码

java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at org.apache.cxf.common.jaxb.JAXBUtils.createSchemaCompiler(JAXBUtils.java:718)
	at org.apache.cxf.common.jaxb.JAXBUtils.createSchemaCompilerWithDefaultAllocator(JAXBUtils.java:732)
	at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createSchemaCompiler(DynamicClientFactory.java:445)
	at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:325)
	at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:243)
	at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:236)
	at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:191)

结论应该是本地IDEA使用JDK作为编译和运行环境
在这里插入图片描述
而服务器上Tomcat容器使用的是默认的JRE作为运行环境。

这里贴出一个我觉得比较全面的分析
https://blog.csdn.net/Ideality_hunter/article/details/73613161

问题解决

Tomcat默认情况下会用系统的环境变量中找到JAVA_HOME和JRE_HOME。但是有的时候我们需要不同版本的JDK共存。

可以在${TOMCAT_HOME}/bin/catalina.bat最前面设置JAVA_HOME和JRE_HOME。

set JAVA_HOME=D:\JAVA_HOME\java6\jdk1.6.0_45
set JRE_HOME=D:\JAVA_HOME\java6\jdk1.6.0_45\jre

或修改${TOMCAT_HOME}/bin/setclasspath.bat文件中添加

set "JAVA_HOME=D:\JAVA_HOME\java6\jdk1.6.0_45"
set "JRE_HOME=D:\JAVA_HOME\java6\jdk1.6.0_45\jre"

在linux下Tomcat配置连接jdk路径${TOMCAT_HOME}/bin/catalina.sh或setenv.sh文件:

export JAVA_HOME=/usr/java/jdk1.7.0_55
export JRE_HOME=/usr/java/jdk1.7.0_55/jre

另外,有时需要设置Tomcat的最大内存,方法如下:

windows下在catalina.bat中添加

set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

linux下在catalina.sh中添加

JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

無间行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值