小编dus*_*van的帖子

如何将 KotlinModule 注册到 AWS lambda Jackson Object Mapper?

Kotlin用来写一个AWS Lambda. 我有一个Kotlin数据类

class MessageObject(
  val id: String,
  val name: String,
  val otherId: String
)
Run Code Online (Sandbox Code Playgroud)

此数据类用作所需接口实现的输入

class Handler : RequestHandler<MessageObject, Output> {
  ...  
  override fun handleRequest(msg: MessageObject, ctx: Context) {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

当我在 aws 控制台中测试此 lambda 并将其传递给正确的 JSON 消息时,我得到以下信息:

An error occurred during JSON parsing: java.lang.RuntimeException
java.lang.RuntimeException: An error occurred during JSON parsing
Caused by: java.io.UncheckedIOException: 
com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
Cannot construct instance of 'com.mycode.MessageObject'(no Creators, like default construct, exist): 
cannot deserialize from Object value (no …
Run Code Online (Sandbox Code Playgroud)

json amazon-web-services jackson kotlin aws-lambda

6
推荐指数
2
解决办法
610
查看次数

可执行 Jar 在类路径上找不到 typesafe/config application.conf

我有一个命令行应用程序,可以下载一些报告,处理它们,然后将数据上传到 Google Drive。我正在将Typesafe-Config用于我需要的所有魔术字符串。Typesafe-Config 查看我的 application.conf 文件的类路径,并使用 HOCON 将配置对象映射到我的类中的字段,如下所示:

来自~/configs/application.conf

my.homePageUrl = "https://my.home.com"

来自MyClass.java

private static Config config = ConfigFactory.load();
private static final String HOME_URL = config.getString("my.homePageUrl");
Run Code Online (Sandbox Code Playgroud)

我正在使用maven-shade-plugin来构建一个可执行的 .jar,以便在远程服务器上轻松部署。该插件如下所示:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <transformers>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                            <manifestEntries>
                                <Main-Class>com.my.reports.ReportRunner</Main-Class>
                                <Class-Path>~/configs/application.conf</Class-Path>
                            </manifestEntries>
                        </transformer>
                    </transformers>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
Run Code Online (Sandbox Code Playgroud)

问题是,当我运行可执行文件 .jar 时,application.conf在我的类路径中找不到(我想这也可能是类型安全代码中的错误)。所有这些在 Intellij 中都运行良好。

dustinevan@iMac:~/bin$ java -jar my-reports-1.0-SNAPSHOT.jar 
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: com.typesafe.config.ConfigException$Missing: No …
Run Code Online (Sandbox Code Playgroud)

java executable-jar maven typesafe-config

4
推荐指数
1
解决办法
3182
查看次数