我正在尝试将 amazon-merchant-web-service-java-sdk 包装在 jruby 中,用于 jruby-on-rails 项目。
在我的测试中,我能够实例化一些类....
require 'java'
require 'lib/MaWSJavaClientLibrary-1.1.jar'
module MWS
include_package 'com.amazonaws.mws'
include_package 'com.amazonaws.mws.model'
end
config = MWS::MarketplaceWebServiceConfig.new #this works!!
...但不是其他人
client = MWS::MarketplaceWebServiceClient.new #this does NOT work!!!
NameError: MarketplaceWebServiceClient not found in packages com.amazonaws.mws, com.amazonaws.mws.model; last error: cannot load Java class com.amazonaws.mws.model.MarketplaceWebServiceClient
const_missing at file:/Users/...
为什么找不到?可能是因为,它是一个接口的实现:
public class MarketplaceWebServiceClient implements MarketplaceWebService
有趣的是我可以实例化接口但不能实例化实现:
service = MWS::MarketplaceWebService.new # does not throw an error
这没有意义,因为接口没有构造函数。该实现有 3 个具有不同参数的构造函数。但是我该如何调用它们呢?
java 的 jRuby 等价物是什么Interface variable = new Implementation()
,即:
MarketplaceWebService service = new MarketplaceWebServiceClient(
accessKeyId, secretAccessKey, appName, appVersion, config);
或者这只是一个导入问题,我没有正确地使课程可用?任何建议表示赞赏。谢谢。
编辑:在撰写本文时,可以在以下位置找到 java sdk:https ://developer.amazonservices.com/doc/bde/feeds/v20090901/java.html/182-0022359-5036344
jar 包含在 zip 中,以及 java 源代码。