未找到 sdk_config.properties

Posted

技术标签:

【中文标题】未找到 sdk_config.properties【英文标题】:sdk_config.properties not found 【发布时间】:2013-06-09 01:14:52 【问题描述】:

我正在尝试在我的网站中包含贝宝处理。我正在使用 java sdk 生成付款,但每当我尝试进行身份验证时,都会收到以下错误消息:

java.io.IOException: 资源 'sdk_config.properties' 不能 找到了

我正在执行的代码如下:

String clientID = properties.getProperty("clientID");
String clientSecret = properties.getProperty("clientSecret");
return new OAuthTokenCredential(clientID, clientSecret).getAccessToken();

我知道文档说你需要 maven,但我没有在我的项目中使用 maven...我只是使用 maven 来构建 sdk,然后在我的项目中包含必要的 jar 和文件。我的 sdk_config.properties 文件位于我的 WEB-INF 文件夹下,并在获取 clientID 和 clientSecret 之前将其加载到属性对象中,但是每当我尝试创建 OAuthTokenCredential 时,代码都会对我产生影响。我找不到 OAuthTokenCredential 对象的来源来找到愚蠢的东西,所以我有点卡在这里......该死!提前谢谢你的帮助:)

【问题讨论】:

【参考方案1】:

好吧,在喝了几杯啤酒和头痛之后,我能够解决自己的问题。我发现 OAuthTokenCredential 对象调用 source code for the ResourceLoader object of the paypal core 来加载 sdk_config.properties 文件。我将 ResourceLoader 代码复制并粘贴到我的代码中并运行它以查看它在做什么。所以基本上 ResourceLoader 对象会在类路径中查找 sdk_config.properties 文件——我使用这个术语是松散的,因为它实际上并没有检查项目的类路径,这就是它找不到文件的原因 -- 但它也会在项目的基础包中查找 .properties 文件。所以我通过将 sdk_config.properties 文件移动到项目的基础包中解决了这个问题(意思是我把它直接放在 src 文件夹下)。现在可以了!!!

Paypal 代码的愚蠢片段... Y 会以如此松散的方式对付款处理如此重要的东西进行硬编码。如果有一个 paypal 开发人员正在监听,我建议更新代码以允许将 .properties 文件的位置传递给 OAuthTokenCredential 构造函数,然后将该位置传递给 getResourceAsStream() 方法。将它放在下一个版本中,因为我确信它会导致很多人头痛,而且他们中的很多人可能只是放弃并使用其他东西。另外,修复 searchClasspath() 方法...它不是在搜索项目的类路径。

【讨论】:

请更新 Rest API 参考文档的 java 部分。没有 AmountDetails 对象。该代码需要一个 Details 对象。这些东西应该开箱即用......它没有。这几乎和 Google Calendar API 一样糟糕。【参考方案2】:

如果你正确地捆绑了 WAR,那么你应该说 .getResourceAsStream("/sdk_config.properties");它应该适合你。

请下载 GitHub 中提供的示例并查看。所有 PayPal 示例都可以开箱即用,因此您还可以将示例代码库与您的代码库进行比较。

https://github.com/paypal/rest-api-sdk-java/tree/master/rest-api-sample

如果您仍有问题,请随时更新此主题。

【讨论】:

我使用 getResourceAsStream() 来获取 .properties 文件的句柄以创建属性对象...这就是我获取 clientID 和 clientSecret 的方式。但是,当我将 clientID 和 clientSecret 传递给 OAuthTokenCredential 构造函数并尝试获取访问令牌时,我收到错误消息(java.io.IOException:找不到资源'sdk_config.properties')。因此,尽管我能够在我的代码中获取 .properties 文件,但 paypal 核心代码失败了。我尝试将 .properties 文件添加到类路径中,但 paypal 核心代码仍然找不到它【参考方案3】:

在 0.7.1 版本中,您可以使用第二个构造函数,它以 configurationMap 作为参数。所以你不需要任何 sdk_config.properties

public OAuthTokenCredential(String clientID, String clientSecret,Map<String, String> configurationMap)

如果你想在没有 sdk_config.properties 的情况下使用 APIContext,你必须调用 setter 来设置配置映射。该映射包含与 sdk_config.properties 中相同的键:值对。(键区分大小写)

例子:

Map<String, String> configurationMap = getConfigurationMap();
String accessToken = new OAuthTokenCredential(clientId, clientSecret, configurationMap).getAccessToken();
APIContext apiContext = new APIContext(accessToken);
apiContext.setConfigurationMap(configurationMap);

【讨论】:

谢谢!我错过了最后一行(在APIContext 对象上再次设置属性),现在它似乎工作了!在嵌入配置没有意义时非常方便(例如在多租户设置中)。 Map&lt;String, String&gt; = getConfigurationMap(); 不是有效的 java 代码

以上是关于未找到 sdk_config.properties的主要内容,如果未能解决你的问题,请参考以下文章

aidlux,显示命令未找到

bash: make: 未找到命令

未找到 ios 开发证书并且未找到未过期的配置文件

为啥linux中总有未找到命令?

UIPrintInteractionController - 未找到支持文档格式的属性或未找到支持的格式

kali 报错 bash:pig.py:未找到的命令