通过 ResourceBundle 访问属性文件时出错

Posted

技术标签:

【中文标题】通过 ResourceBundle 访问属性文件时出错【英文标题】:Error while accessing property file by ResourceBundle 【发布时间】:2019-12-15 18:33:14 【问题描述】:

我无法从 main 方法访问属性文件。

我在 src/main/java 下添加了属性文件,如果我在 Eclipse 中运行主类,它可以工作,但如果我使用此命令,它在命令提示符下不起作用

mvn -e exec:java  -Dexec.mainClass=tenkinfo.toolUtils.BalancingFinancials 

静态 ResourceBundle rb = ResourceBundle.getBundle("utils");

[ERROR] 未能执行目标 org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on 项目 ToolUtils:执行 Java 时发生异常 班级。 null:ExceptionInInitializerError:找不到基础包 名称 utils,语言环境 en_IN -> [帮助 1] org.apache.maven.lifecycle.LifecycleExecutionException: 失败 执行目标 org.codehaus.mojo:exec-maven-plugin:1.6.0:java 项目 ToolUtils 上的 (default-cli):发生异常时 执行 Java 类。空值 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) 在 org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) 在 org.apache.maven.cli.MavenCli.execute (MavenCli.java:956) 在 org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288) 在 org.apache.maven.cli.MavenCli.main (MavenCli.java:192) 在 jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 在 jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke (Method.java:567) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (启动器.java:289) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356) 引起: org.apache.maven.plugin.MojoExecutionException:发生异常 在执行 Java 类时。空值 在 org.codehaus.mojo.exec.ExecJavaMojo.execute (ExecJavaMojo.java:339) 在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) 在 org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) 在 org.apache.maven.cli.MavenCli.execute (MavenCli.java:956) 在 org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288) 在 org.apache.maven.cli.MavenCli.main (MavenCli.java:192) 在 jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 在 jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke (Method.java:567) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (启动器.java:289) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356) 引起:java.lang.ExceptionInInitializerError 在 jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 在 jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke (Method.java:567) 在 org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:282) 在 java.lang.Thread.run (Thread.java:835) 引起:java.util.MissingResourceException:找不到基本名称的包 实用程序,语言环境 en_IN 在 java.util.ResourceBundle.throwMissingResourceException (ResourceBundle.java:2055) 在 java.util.ResourceBundle.getBundleImpl (ResourceBundle.java:1689) 在 java.util.ResourceBundle.getBundleImpl (ResourceBundle.java:1593) 在 java.util.ResourceBundle.getBundleImpl (ResourceBundle.java:1556) 在 java.util.ResourceBundle.getBundle (ResourceBundle.java:857) 在tenkinfo.toolUtils.BalancingFinancials。 (BalanceFinancials.java:38) 在 jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 在 jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke (Method.java:567) 在 org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:282) 在 java.lang.Thread.run (Thread.java:835)

【问题讨论】:

打开目标文件夹并检查该文件是否存在于其中。 【参考方案1】:

ResourceBundle 类用于 Locale 我认为您只想使用常规属性,它应该位于 /src/main/resources/

看看https://crunchify.com/java-properties-file-how-to-read-config-properties-values-in-java/

【讨论】:

以上是关于通过 ResourceBundle 访问属性文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JAVA 中使用 ResourceBundle 将匈牙利字符作为属性文件中的键?

ResourceBundle类读取properties文件

如何在属性文件中指定值,以便可以使用 ResourceBundle#getStringArray 检索它们?

如何在属性文件中指定值,以便可以使用 ResourceBundle#getStringArray 检索它们?

找不到 ResourceBundle 文件,属性文件不在 jar 中

Java ResourceBundle.getBundle 如何加载属性文件?