Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法加载sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo_Java_Maven_Maven Surefire Plugin - Fatal编程技术网

Java 无法加载sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo

Java 无法加载sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo,java,maven,maven-surefire-plugin,Java,Maven,Maven Surefire Plugin,我在一次测试中发现了一个相当神秘的错误。Surefire报告如下: ------------------------------------------------------------------------------- Test set: de.systel.streckenmatching.GeoCoordinateTest ------------------------------------------------------------------------------- T

我在一次测试中发现了一个相当神秘的错误。Surefire报告如下:

-------------------------------------------------------------------------------
Test set: de.systel.streckenmatching.GeoCoordinateTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.129 sec <<< FAILURE!
de.systel.streckenmatching.GeoCoordinateTest  Time elapsed: 0.128 sec  <<< ERROR!
java.util.ServiceConfigurationError: sun.util.locale.provider.LocaleDataMetaInfo: Unable to load sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo
    at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:584)
    at java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:856)
    at java.base/java.util.ServiceLoader$ModuleServicesLookupIterator.hasNext(ServiceLoader.java:1078)
    at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1301)
    at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1386)
    at java.base/sun.util.cldr.CLDRLocaleProviderAdapter$1.run(CLDRLocaleProviderAdapter.java:89)
    at java.base/sun.util.cldr.CLDRLocaleProviderAdapter$1.run(CLDRLocaleProviderAdapter.java:86)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:554)
    at java.base/sun.util.cldr.CLDRLocaleProviderAdapter.<init>(CLDRLocaleProviderAdapter.java:86)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:124)
    at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:346)
    at java.base/java.lang.Class.newInstance(Class.java:604)
    at java.base/sun.util.locale.provider.LocaleProviderAdapter.forType(LocaleProviderAdapter.java:176)
    at java.base/sun.util.locale.provider.LocaleProviderAdapter.findAdapter(LocaleProviderAdapter.java:279)
    at java.base/sun.util.locale.provider.LocaleProviderAdapter.getAdapter(LocaleProviderAdapter.java:250)
    at java.base/java.text.DecimalFormatSymbols.getInstance(DecimalFormatSymbols.java:180)
    at java.base/java.util.Formatter.getZero(Formatter.java:2437)
    at java.base/java.util.Formatter.<init>(Formatter.java:1956)
    at java.base/java.util.Formatter.<init>(Formatter.java:1978)
    at java.base/java.lang.String.format(String.java:3302)
    at org.junit.runner.Description.formatDisplayName(Description.java:114)
    at org.junit.runner.Description.createTestDescription(Description.java:86)
    at org.junit.runners.BlockJUnit4ClassRunner.describeChild(BlockJUnit4ClassRunner.java:96)
    at org.junit.runners.BlockJUnit4ClassRunner.describeChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner.getDescription(ParentRunner.java:352)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:359)
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.LinkageError: loader 'platform' attempted duplicate class definition for sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo. (sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo is in module jdk.localedata of loader 'platform')
    at java.base/java.lang.ClassLoader.defineClass2(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1109)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:183)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:780)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:701)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:582)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:634)
    at java.base/java.lang.Class.forName(Class.java:505)
    at java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:854)
    ... 40 more
Caused by: java.lang.LinkageError: loader 'platform' attempted duplicate class definition for sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo. (sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo is in module jdk.localedata of loader 'platform')
    at java.base/java.lang.ClassLoader.defineClass2(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1109)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:183)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:780)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:701)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:582)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:634)
    at java.base/java.lang.Class.forName(Class.java:505)
    at java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:854)
    ... 40 more
它发生在OpenJDK 14下:

...>java -version
openjdk version "14.0.1" 2020-04-14
OpenJDK Runtime Environment (build 14.0.1+7)
OpenJDK 64-Bit Server VM (build 14.0.1+7, mixed mode, sharing)

我很困惑。发生了什么以及如何解决这个问题?

当我从JDK11升级到JDF15时,同样的情况也发生在我身上。这个问题出现在JDK14+上,但在JDK13上没有问题。

这个问题发生在一个带有JDK 15、TestNG、mongo java驱动程序、Selenium和其他依赖项的自动化测试项目中

我不得不升级到JDK15,因为JDK13的mongo驱动程序中有一个bug。此更新后,开始出现错误“无法加载sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo

我用下面的maven设置解决了这个问题

<properties>
    <jacoco.version>0.8.6</jacoco.version>
</properties>

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <systemPropertyVariables>
                <jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
            </systemPropertyVariables>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
        <executions>
            <execution>
                <id>default-prepare-agent</id>
                <goals>
                    <goal>prepare-agent</goal>
                </goals>
            </execution>
            <execution>
                <id>default-report</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>report</goal>
                </goals>
            </execution>
        </executions>

    </plugin>
</plugins>

0.8.6
org.apache.maven.plugins
maven surefire插件
target/jacoco.exec
org.jacoco
jacocomaven插件
${jacoco.version}
默认准备代理
配制剂
默认报告
准备包装
报告

当我使用JetBrains的IDEIntelliJ IDEA运行测试时,从Java 8升级到Java 11时,我就遇到了这种情况

在我的案例中发生的是Project SDK与
“平台”
使用的SDK不同


在我的例子中,平台是Gradle的JVM。如果有人遇到此问题,请知道您可以通过转到
首选项
构建、执行、部署
构建工具
来设置
构建工具
以匹配Project SDK。这里您可以选择
Gradle
或问题的
Maven
,以及其他选项。

我在Java 8、Eclipse 2021-03(刷新安装)中遇到了完全相同的问题。 显然Eclipse自带了自己的JRE,Gradle将使用它作为默认值。
要解决此问题,您需要转到首选项>Gradle并手动更改Java Home以匹配默认的/system/project Java Home

堆栈跟踪格式
模块/类…
(如
Java.base/Java.util.ServiceLoader
)表明maven正在JDK 9+上运行。请检查JAVA_HOME变量。或者测试
mvn-v
以查看它使用的是哪个JDK。@ernest_k实际上是一个错误的JDK(OpenJDK 14)。非常好。如果您能添加一些描述解决方案如何解决问题的叙述,我会很酷。这个问题发生在一个带有JDK 15、TestNG、mongo java驱动程序、Selenium和其他依赖项的自动化测试项目中。我不得不升级到JDK15,因为JDK13的mongo驱动程序中有一个bug。此更新之后,开始出现错误“无法加载sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo”。我用上面的maven设置解决了这个问题。酷。对不起,我的意思是更新你的答案文本
<properties>
    <jacoco.version>0.8.6</jacoco.version>
</properties>

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <systemPropertyVariables>
                <jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
            </systemPropertyVariables>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
        <executions>
            <execution>
                <id>default-prepare-agent</id>
                <goals>
                    <goal>prepare-agent</goal>
                </goals>
            </execution>
            <execution>
                <id>default-report</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>report</goal>
                </goals>
            </execution>
        </executions>

    </plugin>
</plugins>