我使用axis2 1.7.3版本来满足我的Web服务需求。当我部署aar文件时,它显示以下异常。我在Web服务实现文件中使用了java 8功能(例如,流,过滤器等)。 axis2是否支持部署使用java 8功能实现的Web服务。
org.apache.axis2.deployment.DeploymentException:在模式生成期间发生以下错误:在字节码中查找参数名称时出错:文件中的意外字节 在org.apache.axis2.deployment.ServiceBuilder.populateService(ServiceBuilder.java:441) at org.apache.axis2.deployment.repository.util.ArchiveReader.buildServiceGroup(ArchiveReader.java:109) at org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:232) 在org.apache.axis2.deployment.ServiceDeployer.deploy(ServiceDeployer.java:154) 在org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:149) 在org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:585) 在org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:164) at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377) 在org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371) 在org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:73) 在org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:94) 在org.apache.axis2.deployment.scheduler.Scheduler $ SchedulerTimerTask.run(Scheduler.java:93) at java.util.TimerThread.mainLoop(Unknown Source) 在java.util.TimerThread.run(未知来源) 由以下原因引起:org.apache.axis2.deployment.DeploymentException:在模式生成期间发生以下错误:在字节码中查找参数名称时出错:文件中的意外字节 在org.apache.axis2.deployment.ServiceBuilder.populateService(ServiceBuilder.java:404) ......还有14个 引起:java.lang.IllegalStateException:在字节码中查找参数名称时出错:文件中的意外字节 在org.apache.axis2.description.java2wsdl.bytecode.ClassReader.readCpool(ClassReader.java:354) 在org.apache.axis2.description.java2wsdl.bytecode.ParamReader。(ParamReader.java:78) 在org.apache.axis2.description.java2wsdl.bytecode.ParamReader。(ParamReader.java:57) 在org.apache.axis2.description.java2wsdl.bytecode.ChainedParamReader。(ChainedParamReader.java:52) 在org.apache.axis2.description.java2wsdl.bytecode.MethodTable。(MethodTable.java:31) 在org.apache.axis2.description.java2wsdl.DefaultSchemaGenerator。(DefaultSchemaGenerator.java:177) at org.apache.axis2.deployment.util.Utils.fillAxisService(Utils.java:454) 在org.apache.axis2.deployment.ServiceBuilder.populateService(ServiceBuilder.java:396) ......还有14个
答案 0 :(得分:6)
不,Axis2(我使用1.7.4)在实现类中使用Java 8功能时不起作用,因为在某种程度上,轴在分析该字节码时存在问题。
作为一种解决方法,删除骨架实现中的Java 8功能(例如流)解决了我的问题。您可以在Web服务实现类中使用这些功能(使用Axis2时)。
答案 1 :(得分:1)
快速浏览一下Axis源代码(https://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.0/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ClassReader.java),看起来你的类文件有问题(“损坏的类文件”,第354行)。