首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未找到度量值ServiceProvider

未找到度量值ServiceProvider
EN

Stack Overflow用户
提问于 2017-04-24 16:32:01
回答 3查看 219关注 0票数 0

我正在研究开源库的度量单位,我使用的maven依赖项是:

代码语言:javascript
复制
<dependency>
  <groupId>tec.units</groupId>
  <artifactId>unit-ri</artifactId>
  <version>1.0.2</version>
</dependency>  

它实现了JSR-363。当我尝试使用它时,如下所示:

代码语言:javascript
复制
ServiceProvider provider = ServiceProvider.current();

结果是:

代码语言:javascript
复制
Exception in thread "main" java.lang.IllegalStateException: No measurement ServiceProvider found.

有人能告诉我出了什么问题吗?

EN

回答 3

Stack Overflow用户

发布于 2017-07-24 19:42:53

在Netbeans IDE中打开bean时,我在使用java bean表单中的度量库时遇到了同样的问题。这个技巧对我很有效:

代码语言:javascript
复制
import javax.measure.spi.ServiceProvider;
import tec.units.ri.spi.DefaultServiceProvider;        

private ServiceProvider serviceProvider;    
try {
   serviceProvider = ServiceProvider.current();
} catch ( IllegalStateException e ) {
   serviceProvider = new DefaultServiceProvider();
}
票数 1
EN

Stack Overflow用户

发布于 2017-04-24 17:02:09

因此,我研究了类ServiceProvider以了解current()方法的作用:

https://github.com/unitsofmeasurement/unit-api/blob/master/src/main/java/javax/measure/spi/ServiceProvider.java

您可以看到它使用ServiceLoader返回值。如果您查看ServiceLoader的文档,您将看到您需要一个配置文件:

https://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html

服务提供者通过在META-INF/

资源目录中放置一个提供者配置文件来标识服务提供者。文件名是服务类型的完全限定二进制名。该文件包含具体提供程序类的完全限定二进制名的列表,每行一个。每个名称周围的空格和制表符以及空行将被忽略。注释字符是'#‘('\u0023',数字符号);在每行中,第一个注释字符后面的所有字符都被忽略。该文件必须以UTF-8编码。

票数 0
EN

Stack Overflow用户

发布于 2017-04-25 10:51:24

适用于可能需要使用此库的所有人。这很奇怪,但在我将maven依赖项版本从1.02更改为1.01之后,没有其他更改,它工作得很好。所以,这应该是这个版本的一个bug ...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43583267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档