Oracle Service Bus部署Java Callout报错:testJar.CustomXpath类不存在
解决OSB调用Jar时“Class does not exist”的问题
你遇到的[PipelinePairNode1, Request Pipeline, stage1, Java Callout action] Class testJar.CustomXpath does not exist错误,核心原因大概率是Jar包的内部结构不符合Java包路径规范,或者导出过程中没保留正确的包层级。结合你的代码(testJar包下的CustomXpath类),我来一步步帮你排查和解决:
先明确问题出在哪
你的类全限定名是testJar.CustomXpath,这意味着Jar包内部必须有对应的目录结构:testJar/CustomXpath.class。如果导出时直接把CustomXpath.class放到Jar根目录,OSB就找不到这个类——因为它会按照包名去testJar/目录下找class文件。
正确的Jar导出方法
方法1:用IDE导出(以Eclipse为例,IntelliJ操作逻辑类似)
- 右键你的Java项目 → 选择
Export→ 找到Java分类下的JAR File,点击Next - 在资源选择界面,务必勾选编译后的class文件所在的包目录(一般是项目的
bin/testJar/或者target/classes/testJar/),不要只单独选CustomXpath.class,要保证整个testJar包被包含进去 - 在“JAR File Specification”里设置Jar的保存路径,然后点击
Next到Manifest配置页 - 因为这是供OSB调用的工具类,不需要主类,所以直接选择
Create a new manifest(或者用默认的空manifest),不用填写任何主类信息,直接点击Finish
方法2:用命令行jar工具导出
假设你编译后的CustomXpath.class在./bin/testJar/目录下:
- 打开终端,进入到
bin目录的上级目录(也就是包含testJar文件夹的那个目录) - 执行以下命令:
jar cvf CustomXpath.jar testJar/c:创建新的Jar包v:显示打包的详细过程(可选,方便验证)f:指定生成的Jar文件名
验证Jar包是否正确打包
你可以用命令查看Jar内部结构,确认包路径是否正确:
jar tf CustomXpath.jar
输出里应该能看到这两行:
testJar/ testJar/CustomXpath.class
如果只看到CustomXpath.class,说明包结构错了,需要重新打包。
OSB部署的额外注意点
- 把正确的Jar包放到OSB的类加载路径中:可以放到Domain的
lib目录,或者在OSB项目中作为资源导入(不同版本操作略有差异,一般在项目的Resources模块添加Jar资源) - 在Java Callout动作中,确保引用的类全限定名是
testJar.CustomXpath,和你代码里的包名完全一致
内容的提问来源于stack exchange,提问作者Shaikh Mudassir
相关产品推荐
相关产品推荐

