Java Dropwizard应用程序被AbstractJAXBProvider崩溃

Java Dropwizard应用程序被AbstractJAXBProvider崩溃,java,jersey,mahout,dropwizard,mahout-recommender,Java,Jersey,Mahout,Dropwizard,Mahout Recommender,我使用和Gradle作为构建系统实现了一个服务器应用程序。现在我想集成一些推荐系统操作 在添加Mahout依赖项并尝试运行之后,会出现异常 我最初的依赖项看起来像 dependencies { compile 'io.dropwizard:dropwizard-core:0.9.1' compile 'io.dropwizard:dropwizard-jdbi:0.9.1' compile 'mysql:mysql-connector-java:5.1.37' c

我使用和Gradle作为构建系统实现了一个服务器应用程序。现在我想集成一些推荐系统操作

在添加Mahout依赖项并尝试运行之后,会出现异常

我最初的依赖项看起来像

dependencies {
    compile 'io.dropwizard:dropwizard-core:0.9.1'
    compile 'io.dropwizard:dropwizard-jdbi:0.9.1'
    compile 'mysql:mysql-connector-java:5.1.37'
    compile 'redis.clients:jedis:2.8.0'
    compile 'com.google.guava:guava:18.0'
    compile 'joda-time:joda-time:2.9.1'
    compile 'org.apache.commons:commons-math3:3.4.1'
}
为了做一些基本的推荐系统工作,我集成了依赖项

compile 'org.apache.mahout:mahout-mr:0.11.1'
现在运行应用程序时,我得到一个NoClassDefFoundException:

WARN  [2015-12-07 15:03:09,696] org.glassfish.jersey.internal.Errors: 
The following warnings have been detected: WARNING: HK2 service reification 
failed for [com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider] 
with an exception:
MultiException stack 1 of 2
java.lang.NoClassDefFoundError: javax/mail/internet/ParseException
所以我试着通过

compile 'com.sun.mail:javax.mail:1.5.4'
再次运行应用程序时,会出现另一个异常:

WARN  [2015-12-07 15:05:02,161] org.glassfish.jersey.internal.Errors: The 
following warnings have been detected: WARNING: Unknown HK2 failure detected:
MultiException stack 1 of 2
java.lang.NullPointerException at 
com.sun.jersey.core.provider.jaxb.AbstractJAXBProvider.setConfiguration(AbstractJAXBProvider.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
导致异常的代码来自Jersey:

@Context
public void setConfiguration(FeaturesAndProperties fp) {
    formattedOutput = fp.getFeature(FeaturesAndProperties.FEATURE_FORMATTED); // << Crash here
    xmlRootElementProcessing = fp.getFeature(FeaturesAndProperties.FEATURE_XMLROOTELEMENT_PROCESSING);
}
@Context
公共void集合配置(功能和属性fp){

formattedOutput=fp.getFeature(FeaturesAndProperties.FEATURE_格式化);//问题在于Dropwizard附带了一个Jersey依赖项(在2.22.x中是org.glassfish.Jersey),而Apache Mahout附带了一个不同的Jersey依赖项(在1.9中是com.sun.Jersey)

因此,排除Mahout Jersey依赖项就可以完成这项工作

compile('org.apache.mahout:mahout-integration:0.11.1') {
    exclude group: 'com.sun.jersey'
}

您正在使用的依赖项很可能具有与您的模块不兼容的依赖项

如果您使用的是maven,请使用
mvn dependency:tree
来解决这个问题