为什么dropwizard配置不起作用?

arm*_*min 3 java yaml dropwizard

最近我将HVDF项目的dropwizard版本从0.6.2移植到0.8.2.一旦我尝试运行应用程序,我得到以下错误.我提供下面的配置类和yml文件:

配置类:

package com.mongodb.hvdf;

import io.dropwizard.Configuration;

import java.util.LinkedHashMap;
import java.util.Map;

import com.mongodb.hvdf.configuration.MongoGeneralConfiguration;

public class HVDFConfiguration extends Configuration {

    public MongoGeneralConfiguration mongodb = new MongoGeneralConfiguration();
    public Map<String, Object> services = new LinkedHashMap<String, Object>();
}
Run Code Online (Sandbox Code Playgroud)

Yaml文件:

server:
  applicationConnectors:
    - type: http
      port: 8080
Run Code Online (Sandbox Code Playgroud)

我在运行时收到以下错误:

config.yml has an error:
  * Failed to parse configuration at: server.applicationConnectors.[0]; Could not resolve type id 'http' into a subtype of [simple type, class io.dropwizard.jetty.ConnectorFactory]
 at [Source: N/A; line: -1, column: -1] (through reference chain: com.mongodb.hvdf.HVDFConfiguration["server"]->io.dropwizard.server.DefaultServerFactory["applicationConnectors"]->java.util.ArrayList[0])
Run Code Online (Sandbox Code Playgroud)

Dha*_*hka 9

如果您使用的是maven shade插件,请使用必要的变压器.

将ServicesResourceTransformer添加到您的shade插件配置可能会解决问题.阅读更多关于变压器的信息(这里).

<configuration>
<transformers>
    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
        <mainClass>com.yb.exercise.dw.App</mainClass>
    </transformer>
</transformers>
Run Code Online (Sandbox Code Playgroud)

  • @Dhanushka补充说,第一个变换器,"org.apache.maven.plugins.shade.resource.ServicesResourceTransformer",为我解决了这个问题.我已经有了ManifestResourceTransformer和<mainClass>部分.但我真的不明白为什么这样可以解决这个问题.你能详细说明你是如何解决这个问题的吗? (2认同)