【问题标题】:aws - java8 - Can not deserialize instance of java.lang.String out of START_OBJECT tokenaws - java8 - 无法从 START_OBJECT 令牌中反序列化 java.lang.String 的实例
【发布时间】:2019-11-01 18:47:29
【问题描述】:

java新手。

我用 java 8 编译过

javac HelloWorld.java --release 8

并将编译后的文件作为 aws lambda 代码上传。

为什么我在 aws lambda 中运行时会出现错误?

public class HelloWorld
{
    public static void main(String[] args)
    {   
        System.out.println("Hello, World");
    }   
}

错误

An error occurred during JSON parsing: java.lang.RuntimeException
java.lang.RuntimeException: An error occurred during JSON parsing
Caused by: java.io.UncheckedIOException: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token
 at [Source: lambdainternal.util.NativeMemoryAsInputStream@ae45eb6; line: 1, column: 1]
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token
 at [Source: lambdainternal.util.NativeMemoryAsInputStream@ae45eb6; line: 1, column: 1]
    at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)

【问题讨论】:

标签: java amazon-web-services aws-lambda


【解决方案1】:

你在这里遗漏了一些基本的东西。您不能只在 Lambda 上抛出一个类或 jar 文件。 Lambda 服务和您的代码之间有一个定义明确的接口。可以这样想:Lambda 启动一个 JVM,而 Lambda 本身使用静态 main 方法(在其代码中,而不是您的代码中)实现了一个 Java 类并执行它。 main 方法最终将调用您配置的 Lambda 函数的入口点。我会推荐这个Hello World tutorial

【讨论】:

    【解决方案2】:

    AWS Lambda 提供有限的 Java 运行时来执行 AWS Java Lambda 处理程序。由于代码在共享的多租户环境中运行,这些限制是合乎逻辑的,例如出于安全目的访问文件系统等。为了执行程序,您的类应该实现RequestHandler 接口并实现handleRequest 方法。这是来自official documentation的示例

    package example;
    
    import com.amazonaws.services.lambda.runtime.Context;
    import com.amazonaws.services.lambda.runtime.RequestHandler;
    
    public class Hello implements RequestHandler<Integer, String>{
      public String handleRequest(Integer myCount, Context context) {
        return String.valueOf(myCount);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-06-01
      • 2013-10-23
      • 2019-12-13
      • 2019-02-08
      • 2017-09-23
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 2014-12-17
      相关资源
      最近更新 更多