2016-01-29 87 views
0

當我從休眠改爲JDBI,並試圖啓動我的應用程序時,IO/dropwizard /碼頭/ RequestLogFactory,錯誤發生以下java.lang.NoClassDefFoundError:使用dropwizard

java.lang.NoClassDefFoundError: io/dropwizard/jetty/RequestLogFactory

堆棧跟蹤說,該這個問題的原因是在我的配置類中,在類定義處。但我不知道什麼是錯的。任何人有這個問題?

MyConfiguration.java

import com.fasterxml.jackson.annotation.JsonProperty; 
import io.dropwizard.Configuration; 
import io.dropwizard.db.DataSourceFactory; 
import org.hibernate.validator.constraints.NotEmpty; 

import javax.validation.constraints.NotNull; 

public class MyConfiguration extends Configuration { 

    @JsonProperty 
    @NotNull 
    private DataSourceFactory database; 

    @JsonProperty 
    @NotEmpty 
    private String someString; 


    public DataSourceFactory getDataSourceFactory() { 
     return database; 
    } 

    public String getSomeString() { 
     return someString; 
    } 
} 

編輯 我使用dropwizard 1.0.0和RequestLogFactory既不是給定的包也沒有的IntelliJ找不到該類。

+0

'RequestLogFactory'在1.0.0版本中[新工件和包](https://github.com/dropwizard/dropwizard/tree/master/dropwizard-request-logging)。 'dropwizard-core' [應該拉入](https://github.com/dropwizard/dropwizard/blob/master/dropwizard-core/pom.xml#L85)。我會確保你的所有依賴關係都被更新了。 –

回答

1

您沒有直接使用RequestLogFactory,但它似乎是一個您正在導入的類是哪個類,並且該jar需要存在於您的類路徑中,以供您導入的這些類在運行時適當地運行。你應該追蹤你需要包含在包含RequestLogFactory類的類路徑中的jar。

+0

這個類在我當前的dropwizard版本中不存在 – VanDavv

+0

沒錯,我在說這個包可能在另一個需要放在類路徑中的「dropwizard」jar中。我發現項目[1]我期望找到這個RequestLogFactory類,但我沒有看到它。我確實在另一個項目中找到了RequestLogFactory [2]。 [1] https://github.com/dropwizard/dropwizard/tree/master/dropwizard-jetty/src/main/java/io/dropwizard/jetty [2] https://github.com/dropwizard /dropwizard/blob/master/dropwizard-request-logging/src/main/java/io/dropwizard/request/logging/RequestLogFactory.java –

0

我最好的猜測是你缺少的import語句RequestLogFactory類:

import com.fasterxml.jackson.annotation.JsonProperty; 
import io.dropwizard.Configuration; 
import io.dropwizard.db.DataSourceFactory; 
import org.hibernate.validator.constraints.NotEmpty; 

import javax.validation.constraints.NotNull; 

你可能需要包括:

import io.dropwizard.jetty.RequestLogFactory; 

或簡單(如果您有更多的內部類的碼頭):

import io.dropwizard.jetty.*; 
+0

我編輯了我的問題。 RequestLogFactory不再存在 – VanDavv