异常:Unable to create schema compiler解决方式

本文介绍了解决在Spring Cloud项目中使用JaxWsDynamicClientFactory调用webservice服务时出现的Unable to create schema compiler异常的方法。通过分析异常原因,发现是由于JRE环境中缺少必要的tools.jar文件导致,并提供了具体的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在用springcloud框架进行开发的时候,因为需要JaxWsDynamicClientFactory类来远程调用webservice服务,在创建好该类调用这个方法

             Client client = dcf.createClient("http://127.0.0.1:8080/aa/bb?wsdl")

来创建调用的客户端,在eclipse运行时,各种调用webservice服务完全正常;但是把整个项目打成jar包的时候,再把这个jar启动起来,再去运行相同的部分,这是dos命令行就会报出Unable to create schema compiler的异常,翻译过来就是:无法创建模式编译器

异常是这样的,但是我们找找Caused by:......


会发现缺少了一个类,这个类是在com.sun.tools下面的类,那么看到sun我们首先要意识到这是jdk里面的东西。那么这个时候去找jdk/lib发现有个tools.jar,把它解压往目录里面找,就会找到我们缺少的那个类;我们知道java项目在运行的时候是在jre中运行的,就是说打包的jar项目在jre运行的时候也需要tools.jar里面的类的,但是我们去jre/lib去找,却发现jre/lib没有tools.jar,问题原因找到了,就是:jre运行环境缺少tools.jar,于是我们将jdk里面的tools.jar复制带jre/lib之后再去启动,发现webservice能够正常调用。

例外:有可能将jdk里面的tools.jar复制带jre/lib之后启动项目会报一个错误error:No compiler is provided is this environment. Perhaps you are running in a JRE rather than JDK (翻译:在这种环境下不提供编译器。也许你是在JRE,而不是JDK),就是说项目运行的环境和你认为的运行环境不是一个环境,说白了就是说存在多个运行环境,存在多个jre。造成这个问题的原因可能是当我们在oracle下载下来jdk在进行安装的时候,当我们安装完jdk的时候,软件还会提醒你安装一个单独的jre,但是当我们安装完jdk的时候,会发现在jdk的安装目录里面已经存在jre的目录了,就是说在jdk安装完了之后,在jdk的安装目录里面已经安装完了jre,一般就没有必要再单独安装一个jre了,所以在提醒你安装单独的jre时,将窗口关闭即可;当然如果存在多个运行环境的情况下,我们也能通过配置环境变量指定我们需要的jre也是可以的。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值