Java eclipse MicroporFiles配置未找到ConfigProviderResolver实现

Java eclipse MicroporFiles配置未找到ConfigProviderResolver实现,java,eclipse,jakarta-ee,glassfish,microservices,Java,Eclipse,Jakarta Ee,Glassfish,Microservices,我在我的运动衫2.26中使用v1.1 我的完整构建.gradle如下所示 apply plugin: 'java' apply plugin: 'war' repositories { mavenCentral() } war{ archiveName = 'pqr.war' } dependencies { compile 'javax:javaee-api:7.0' compile 'javax.ws.rs:javax.ws.rs-api:2.0'

我在我的运动衫2.26中使用v1.1

我的完整构建.gradle如下所示

apply plugin: 'java'
apply plugin: 'war'

repositories {
    mavenCentral()
}

war{
    archiveName = 'pqr.war'
}

dependencies {
    compile 'javax:javaee-api:7.0'
    compile 'javax.ws.rs:javax.ws.rs-api:2.0'
    compile 'org.glassfish.jersey.core:jersey-common:2.26'
    compile 'org.glassfish.jersey.core:jersey-client:2.26-b03'
    compile 'org.glassfish.jersey.core:jersey-server:2.26'
    compile 'org.glassfish.jersey.containers:jersey-container-servlet-core:2.26'
    compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.26'
    compile 'org.glassfish.jersey.media:jersey-media-moxy:2.26'
    compile 'org.glassfish.jersey.inject:jersey-hk2:2.26'
    compile 'org.eclipse.microprofile.config:microprofile-config-api:1.1'
}
我在
{PROJECT_ROOT}/src/main/webapp/META-INF/microfile config.properties中找到了所需的属性文件
内容是什么

// Higher ordinal value so that this configuration source will take precedense
config_ordinal = 599999999 
foo.bar = abcdefghijklmnopqrstuvwxyz
每当我尝试将此配置作为

import javax.ws.rs.GET;
import javax.ws.rs.Path;

import org.eclipse.microprofile.config.Config;
import org.eclipse.microprofile.config.ConfigProvider;

@Path(value = "awesomeService")
public class AwesomeService {

    @GET
    @Path(value = "test")
    public String someOperation() {

        Config config = ConfigProvider.getConfig(); // fails here
        String value = config.getValue("foo.bar", String.class);

        return value;
    }

}
尽管ConfigProviderResolver.class位于类路径中,但它抛出“找不到ConfigProviderResolver实现”。我使用GlassFish4进行部署。我哪里弄错了。以下是glassfish的服务器日志

[2017-12-09T20:34:17.296+0530] [glassfish 4.1] [WARNING] [] [javax.enterprise.web] [tid: _ThreadID=27 _ThreadName=http-listener-1(1)] [timeMillis: 1512831857296] [levelV$
lue: 900] [[
  StandardWrapperValve[org.pqr.rest.AppConfig]: Servlet.service() for servlet org.pqr.rest.AppConfig threw exception
java.lang.IllegalStateException: No ConfigProviderResolver implementation found!
        at org.eclipse.microprofile.config.spi.ConfigProviderResolver.instance(ConfigProviderResolver.java:122)
        at org.eclipse.microprofile.config.ConfigProvider.<clinit>(ConfigProvider.java:74)
        at org.pqr.rest.AwesomeService.someOperation(AwesomeService.java:16)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
[2017-12-09T20:34:17.296+0530][glassfish 4.1][WARNING][javax.enterprise.web][tid:_ThreadID=27 _ThreadName=http-listener-1(1)][timeMillis:1512831857296][levelV$
[附件:900][[
StandardWrapperValve[org.pqr.rest.AppConfig]:Servlet org.pqr.rest.AppConfig的Servlet.service()引发异常
java.lang.IllegalStateException:未找到ConfigProviderResolver实现!
位于org.eclipse.microfile.config.spi.ConfigProviderResolver.instance(ConfigProviderResolver.java:122)
位于org.eclipse.microfile.config.ConfigProvider。(ConfigProvider.java:74)
位于org.pqr.rest.AwesomeService.someOperation(AwesomeService.java:16)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
位于org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
位于org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
位于org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutingVoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
位于org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
位于org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
位于org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
位于org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
可以在此处下载导致此问题的示例项目。

错误是正确的。MicroProfile Config是一个API,一个规范。它不是一个实现。要有一个实现,您可以使用类似于独立库的东西


另外请注意,您可能需要将属性文件放在构建中的
src/main/resources/META-INF
下,以防属性加载失败。

您确实是正确的。我假设atleaset core config API包含默认配置选项的ConfigProviders,例如microprofile-config.properties文件。谢谢谢谢你的洞察力。