为什么dropwizard配置不起作用?

时间:2014-12-18 09:21:44

标签: 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>();
}

Yaml文件:

server:
  applicationConnectors:
    - type: http
      port: 8080

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

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])

2 个答案:

答案 0 :(得分:9)

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

将ServicesResourceTransformer添加到您的shade插件配置可能会解决问题。 详细了解变形金刚(here)。

<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>

答案 1 :(得分:2)

问题是,由于一些构建路径问题,jackson用来动态加载类类型并设置其配置的DiscoverableSubtypeResolver类找不到src / main / resource文件夹。但是当我将此资源文件夹添加到我的构建路径时一切正常。