MissingResourceException但不会丢失资源

时间:2016-11-25 18:28:03

标签: java

我刚刚在Windows,Netbeans上的IDE中编写了一个电报机器人。完美运行,完全没有任何问题。我的问题是,当我创建一个store-for-store以便在我自己的Ubuntu VPS中上传它然后我运行它(使用java -jar PastaBot.jar)时,控制台显示此错误:

foo() {
  echo "foo"
}

bar() {
  echo "bar"
}

baz() {
  echo "baz"
}

export -f foo
export -f bar
export -f baz

我不明白为什么一切都在我的IDE中工作正常但是甚至没有在我的服务器中启动。我知道这是一个与我的属性文件相关的问题,并且在大多数情况下会抛出,因为strings.properties文件的路径错误。

这是我的文件层次结构:

file folder structure

这是我的build.xml文件:也许我在其中缺少一个属性,但我不知道如何解决这个问题,因为我不是真的进入xml文件。

Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name localisation.strings, locale en_US
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:1082)
    at utils.LocalisationService.<init>(LocalisationService.java:74)
    at utils.LocalisationService.getInstance(LocalisationService.java:62)
    at pastabot.Pasta.populateDongers(Pasta.java:53)
    at pastabot.Pasta.<init>(Pasta.java:29)
    at pastabot.BotHandler.<init>(BotHandler.java:20)
    at pastabot.TelegramBotJava.main(TelegramBotJava.java:26)
Caused by: java.lang.IllegalArgumentException: Malformed \uxxxx encoding.
    at java.util.Properties.loadConvert(Properties.java:574)
    at java.util.Properties.load0(Properties.java:391)
    at java.util.Properties.load(Properties.java:341)
    at java.util.PropertyResourceBundle.<init>(PropertyResourceBundle.java:138)
    at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2687)
    at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1501)
    at java.util.ResourceBundle.findBundle(ResourceBundle.java:1465)
    at java.util.ResourceBundle.findBundle(ResourceBundle.java:1419)
    at java.util.ResourceBundle.findBundle(ResourceBundle.java:1419)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1361)
    ... 7 more

这是我用来获取正确的语言环境字符串的类LocalisationService,正如你在单例构造函数中看到的那样(我认为正确地认为)本地化文件:

<?xml version="1.0" encoding="UTF-8"?>
<project name="Copypastabot" default="default" basedir=".">
<description>Builds, tests, and runs the project Copypastabot.</description>
<import file="nbproject/build-impl.xml"/>

<target name="package-for-store" depends="jar">
    <property name="store.jar.name" value="PastaBot"/>
    <property name="store.dir" value="store"/>
    <property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>
    <echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>
    <delete dir="${store.dir}"/>
    <mkdir dir="${store.dir}"/>
    <jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">
        <zipgroupfileset dir="dist" includes="*.jar"/>
        <zipgroupfileset dir="dist/lib" includes="*.jar"/>
        <manifest>
            <attribute name="Main-Class" value="${main.class}"/>
        </manifest>
    </jar>
    <zip destfile="${store.jar}">
        <zipfileset src="${store.dir}/temp_final.jar"
                excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
    </zip>
    <delete file="${store.dir}/temp_final.jar"/>
</target>

我已经搜索了解决方案,但没有任何帮助我:strings_en.properties位置正确,所以我无法得到正在发生的事情。直到昨天我一直坚持这个问题,这让我很生气。

你们可以帮助我吗?谢谢:))

1 个答案:

答案 0 :(得分:1)

我找到了编辑strings.properties文件的解决方案: 像

这样的字符串
hello\user

抛出IllegalArgumentException,导致程序崩溃,因此不会加载任何东西(这就是为什么它无法检索strings_en.properties)。 相反,更好地逃避这样的“\”:

hello\\user

那是因为程序试图将\ user编码为十六进制值,而不是。一个由非拉丁字符组成的大量字符串的属性文件,例如一行ascii表情符号,可能是一个真正的问题,因为\ u字符是常用的。

相关问题