AWS SWF 流框架 - Eclipse AspectJ 加载时编织
Posted
技术标签:
【中文标题】AWS SWF 流框架 - Eclipse AspectJ 加载时编织【英文标题】:AWS SWF Flow Framework - Eclipse AspectJ Load-Time Weaving 【发布时间】:2012-03-13 19:23:48 【问题描述】:是否有人设法让 Simple Workflow 和 Flow Framework 的 AWS 开发工具包示例正常工作?我已经按照 Eclipse 设置说明 (http://docs.amazonwebservices.com/amazonswf/latest/awsflowguide/setup.html) 进行了操作,但没有生成任何类。结果,我的项目无法构建,因为到处都缺少 *Client 类。
我已经对 SDK 中的示例和第一次登录 SWF 管理控制台时提供的 ImageProcessing
示例进行了尝试。同事同样无法让它发挥作用。
【问题讨论】:
【参考方案1】:在这种情况下,我遇到了两个(可能不相关的)问题:
1) 你可能仍然错过了一个重要的先决条件(很容易错过,我也做过;) - 请参阅Setting up the Development Environment:
如果您使用的是 Eclipse 开发环境,[...] 使用更新站点安装 AWS Toolkit for Eclipse http://aws.amazon.com/eclipse/。 请务必安装 Amazon Simple 工作流服务 (SWF) 工具。 除其他外,此插件 处理注释并生成客户端类。 [强调我的]
一旦我修复了我的这个疏忽,编译时编织就开始按预期在构建时生成类。
2) 我的initial answer 解决了由于SpringSource Tool Suite (STS) 和AspectJ developer tools for Eclipse 提供的AspectJ 之间的明显冲突而导致AspectJ 运行时丢失的后续问题。我仍然没有弄清楚这是否只是我的 STS 安装的本地问题 - 请参阅我的答案以了解详细信息,以防这种冲突也适用于您。
【讨论】:
【参考方案2】:更新
请先查看我的second answer,它解决了一个容易错过但重要的先决条件;下面最初的答案中解决的问题实际上可能只是我的 STS 安装的配置问题。
您是否偶然使用了SpringSource Tool Suite (STS)?这似乎是由 STS 隐式安装的 AspectJ 支持(或Spring Roo)与记录在案的AspectJ developer tools for Eclipse 之间的冲突,例如通过内置的Eclipse Marketplace 客户端安装。
我有一个 Eclipse Indigo 安装,事后通过 STS Eclipse 更新站点安装了 STS(即不是 SpringSource 下载包),但遇到了同样的问题。从市场上安装用于 Eclipse 的 AspectJ 开发人员工具也没有改变这一点,尽管进行了一些来回配置尝试(尽管没有记录错误),尤其是找不到丢失的 AspectJ 运行时 jar(org.aspectj.jar)。 runtime.source_1.6.12.20110613132200.jar 就我而言)。
但是,使用相同的 Eclipse 包并仅安装适用于 Eclipse 的 AspectJ 开发人员工具会产生要安装的 AspectJ 运行时,并且该示例反过来也可以正常工作。
祝你好运!
【讨论】:
我安装了 Eclipse Indigo (3.7.1.r37x_v20110729-9gF7UHOxFtniV7mI3T556iZN9AU8bEZ1lHMcVK) 和 AJDT 插件 (2.1.3.e37x-20110628-1900),按照 AWS 文档遵循加载时编织说明,仍然没有运气。 我对像这样使用 AspectJ 不太熟悉 - 如果一切正常,我应该期望这些类在什么时候神奇地出现? @Deejay:我暂时只使用了编译时编织,它会按预期生成构建类 - 也许你还错过了一步?例如。安装 AWS Toolkit for Eclipse 不会自动安装 Amazon Simple Workflow Service (SWF) 工具(处理注释并生成客户端课程) - 我最初确实错过了那个;) @Stefan:这就是解决方案!如果您想添加它作为答案,我会相应地接受它。 @Deejay:很高兴这成功了 :) 我提供了第二个答案,主要解决这个先决条件步骤,一旦我遇到的 STS 冲突中可能有更多内部,我将更新/合并两者(你有吗?现在真的可以使用 STS 了吗?) - 谢谢!【参考方案3】:有趣的是,设置开发环境文档中的使用加载时间编织的说明与使用 Eclipse 3.6 (Helios) 一样,但是请不能完全使用 Eclipse 3.7 (Indigo)。查看 Eclipse 日志文件以了解两个版本之间的差异时,似乎在使用 Indigo 运行时缺少 log4j 和 freemarker 依赖项,但在 Helios 中可能存在。还值得注意的是,您还可以使用 IntelliJ IDEA 使编译时编织工作正常(我使用的是社区版,但它应该可以正常使用许可版本)。
【讨论】:
【参考方案4】:我通过执行以下操作在 OSX 的命令行中编译了 java 示例:
-
在我的 .profile 中设置环境变量:export
AWS_SWF_SAMPLES_CONFIG=$HOME/aws-java-sdk/1.4.7/samples/AwsFlowFramework
下载junit-4.11、apache-log4j-1.2.17和spring-framework-3.2.3
来自各自的出版商
将下载的文件复制到 $HOME/aws-java-sdk/1.4.7/third-party
通过运行“ant compile”构建
$HOME/aws-java-sdk/1.4.7/samples/AwsFlowFramework
【讨论】:
以上是关于AWS SWF 流框架 - Eclipse AspectJ 加载时编织的主要内容,如果未能解决你的问题,请参考以下文章