Amazon SWF Flow框架中的自动生成代码抛出语法错误

3

我正在尝试使用亚马逊的SWF流程框架,但是出现了以下错误,项目无法编译。我使用Maven进行依赖管理,并从Intellij中运行代码。

[INFO] -------------------------------------------------------------
[ERROR] /home/meow/Arena/github/ProjectX/AWS/target/generated-sources/annotations/aws/swf/B_FlowFramework/B_WithAWSFlow/EditImageActivityClient.java:[24,18] <identifier> expected
[ERROR] /home/meow/Arena/github/ProjectX/AWS/target/generated-sources/annotations/aws/swf/B_FlowFramework/B_WithAWSFlow/EditImageActivityClient.java:[24,19] = expected
[ERROR] /home/meow/Arena/github/ProjectX/AWS/target/generated-sources/annotations/aws/swf/B_FlowFramework/B_WithAWSFlow/EditImageActivityClient.java:[24,25] illegal start of type
[ERROR] /home/meow/Arena/github/ProjectX/AWS/target/generated-sources/annotations/aws/swf/B_FlowFramework/B_WithAWSFlow/EditImageActivityClient.java:[29,18] <identifier> expected
[ERROR] /home/meow/Arena/github/ProjectX/AWS/target/generated-sources/annotations/aws/swf/B_FlowFramework/B_WithAWSFlow/EditImageActivityClient.java:[29,19] = expected

我已从Intellij确认了注释处理是否已启用,方法是:打开“设置”-》“构建、执行、部署”-》“编译器”-》“注释处理器”-》启用注释处理

该代码库位于GitHub上,其入口点在https://github.com/vikkyhacks/ProjectX/blob/master/AWS/src/main/java/aws/swf/B_FlowFramework/B_WithAWSFlow/WorkflowStarter.java

此外,为了方便参考,附加了pom.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>vikkyhacks.projectX.aws</groupId>
    <artifactId>AWS</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-swf-build-tools</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-dynamodb</artifactId>
            <version>1.11.635</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-iam</artifactId>
            <version>1.11.635</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-sqs</artifactId>
            <version>1.11.635</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

这个问题与AspectJ有什么确切的关系?为什么要加这个标签? - kriegaex
SWF Flow框架使用它,一些旧版本需要将其添加到pom.xml中,但我会将其移除。 - vikkyhacks
考虑使用Cadence Workflow(https://cadenceworkflow.io/),它是SWF的开源版本,不需要代码生成和AspectJ依赖。 - Maxim Fateev
@MaximFateev 我们在工作中正在使用这个,我想了解一下亚马逊SWF Flow框架的工作原理,但更改框架对我来说不是一个选项。 - vikkyhacks
让我与你的团队交流,我可以说服他们改变 :) - Maxim Fateev
1个回答

0

可能是因为您正在使用AWS SDK v1.11和JDK 1.8。您是否尝试升级AWS SDK到2.0版本,或将JDK降级到1.6?

请查看官方文档:

SDK 1.1开始:https://github.com/aws/aws-sdk-java/blob/master/README.md

要运行SDK,您需要Java 1.6+。有关SDK的要求和最佳设置的更多信息,请参阅开发人员指南中的安装Java开发环境部分。

SDK 2.0开始:https://github.com/aws/aws-sdk-java-v2/blob/master/README.md

要运行SDK,您需要Java 1.8+。有关SDK的要求和最佳设置的更多信息,请参阅开发人员指南中的安装Java开发环境部分。
此外,AWS 建议使用BOM方法来指定/包含单个模块: 指定单个SDK模块(推荐) 要选择单个SDK模块,请使用Maven的AWS SDK for Java BOM。这可以确保您指定的模块使用相同版本的SDK,并且它们彼此兼容。
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>bom</artifactId>
      <version>2.X.X</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

还有一个关于Kinesis和DynamoDB的例子:

<dependencies>
  <dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>kinesis</artifactId>
  </dependency>
  <dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>dynamodb</artifactId>
  </dependency>
</dependencies>

注意:对于SWF,请尝试将artifactId设置为swf。完整列表:https://search.maven.org/search?q=g:software.amazon.awssdk


你能展示一些 SWF 依赖的例子,而不是 DynamoDB 吗? - vikkyhacks
尝试使用artifact id“swf”(https://search.maven.org/artifact/software.amazon.awssdk/swf/2.8.0/jar)。完整列表:https://search.maven.org/search?q=g:software.amazon.awssdk - Fabio Manzano
你给的链接没用,我正在看 https://mvnrepository.com/artifact/software.amazon.awssdk/aws-sdk-java/2.0.0-preview-1 但是我没有在 SWF 上看到任何东西。 - vikkyhacks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接