InDesign Server SDK Java示例客户端运行异常:类引用未解析
解决InDesign Server Java客户端未解析符号问题
以下是针对你遇到的类未解析错误的排查和解决步骤:
确认wsimport命令的完整参数
不要仅使用wsimport -keep,需要指定包名匹配示例代码中的import路径,同时开启日志排查问题。执行命令:wsimport -keep -verbose -p localhost.Service_wsdl "你的IDSP.wsdl完整路径"-p参数确保生成的类直接落在localhost.Service_wsdl包下,和示例代码的import一致;-verbose能输出生成过程的详细日志,方便定位是否有WSDL解析失败的情况。补全XSD对应的Java类
InDesign Server的WSDL内嵌了XSD schema(比如定义IDSPScriptArg、RunScriptParameters的schema),单独用wsimport可能无法生成这些类。需要:- 打开IDSP.wsdl文件,找到
<wsdl:types>标签下的XSD内容,将其保存为单独的ids.xsd文件。 - 使用JDK自带的
xjc命令生成XSD对应的Java类:xjc -d ./generated -p com.adobe.ns.InDesign.soap "ids.xsd的完整路径"-d指定生成类的输出目录,-p指定包名匹配示例中的com.adobe.ns.InDesign.soap。
- 打开IDSP.wsdl文件,找到
正确配置IDE的源码路径
生成所有类后,确保localhost.Service_wsdl和com.adobe.ns.InDesign.soap所在的目录被IDE标记为源码根目录:- IntelliJ:右键目标目录 →
Mark Directory as→Sources Root - Eclipse:右键目标目录 →
Build Path→Use as Source Folder
避免只把文件复制到项目中但未加入编译路径。
- IntelliJ:右键目标目录 →
核对JDK版本兼容性
InDesign Server SDK的Java客户端对JDK版本有要求(通常推荐JDK 8),过高版本的JDK可能导致代码生成或编译错误。检查IDE的项目JDK配置:- IntelliJ:
File→Project Structure→Project中调整SDK版本 - Eclipse:
Window→Preferences→Java→Installed JREs选择兼容的JDK
- IntelliJ:
验证WSDL来源一致性
既然C++客户端能正常运行,说明服务端状态正常。可以尝试直接从运行中的服务获取WSDL生成代码,比如执行:wsimport -keep -verbose -p localhost.Service_wsdl "http://localhost:你的服务端口/IDSP/IDSP.wsdl"避免本地WSDL文件和运行服务的WSDL版本不一致导致的类缺失。
内容的提问来源于stack exchange,提问作者Bikramjit Singh
相关产品推荐
相关产品推荐

