![](/img/trans.png)
[英]java.lang.NullPointerException when trying to read txt file in java
[英]java.lang.NullPointerException when trying to call SDN from aws lambda handler function
我有一個處理函數,我在其中調用我的 spring 數據存儲庫接口。 該代碼在我的主方法或從 jar 中運行良好,但是當我在 s3 中上傳 jar 並從我調用存儲庫方法的 aws lambda 調用時拋出 NullPointerException。 下面是我的 lambda 處理程序方法;
public class LambdaRestFunction implements RequestHandler<String, Object> {
@Autowired
UserRepository userRepository;
@Override
public String handleRequest(String uname, Context context) {
String time = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss").format(Calendar.getInstance().getTime());
context.getLogger().log("Lambda call started: " + time);
List<User> users = new ArrayList<>();
context.getLogger().log("Array initialized.");
**users = userRepository.findByName(uname);** // <-- NullPointerException thrown here
context.getLogger().log("Method call over..");
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = "[]";
try {
json = ow.writeValueAsString(users);
} catch (JsonProcessingException e) {
e.printStackTrace();
context.getLogger().log("Error from application : " + e.getMessage());
}
context.getLogger().log("Lambda function completed: " + time);
return json;
}
}
我的存儲庫界面是;
@RepositoryRestResource(collectionResourceRel = "user", path = "user")
public interface UserRepository extends GraphRepository<User> {
@Query("MATCH (u:User) WHERE u.id =({id}) RETURN u")
User findUser(@Param("id") Long id);
}
域類是;
@NodeEntity
public class User {
@GraphId Long id;
private String name;
private String dob;
private String cc;
public User(String name, String dob, String cc) {
this.name = name;
this.dob = dob;
this.cc = cc;
}
public User() {
}
public String getName() {
return name;
}
...
請在跟蹤日志下方找到:
java.lang.NullPointerException
at com.test.lambda.LambdaRestFunction.handleRequest(LambdaRestFunction.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at lambdainternal.EventHandlerLoader$PojoMethodRequestHandler.handleRequest(EventHandlerLoader.java:439)
at lambdainternal.EventHandlerLoader$PojoHandlerAsStreamHandler.handleRequest(EventHandlerLoader.java:370)
at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:972)
at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:235)
at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:60)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:94)
如果有人能幫我找到異常的原因,我將不勝感激。 先感謝您。
Lambda 不支持注解,所以@Autowired 不會有想要的效果。
在https://docs.aws.amazon.com/lambda/latest/dg/java-programming-model-req-resp.html 上,請參閱“處理程序輸入/輸出:POJO 類型”下的注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.