我刚刚在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文件的路径错误。
这是我的文件层次结构:
这是我的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位置正确,所以我无法得到正在发生的事情。直到昨天我一直坚持这个问题,这让我很生气。
你们可以帮助我吗?谢谢:))
答案 0 :(得分:1)
我找到了编辑strings.properties文件的解决方案: 像
这样的字符串hello\user
抛出IllegalArgumentException,导致程序崩溃,因此不会加载任何东西(这就是为什么它无法检索strings_en.properties)。 相反,更好地逃避这样的“\”:
hello\\user
那是因为程序试图将\ user编码为十六进制值,而不是。一个由非拉丁字符组成的大量字符串的属性文件,例如一行ascii表情符号,可能是一个真正的问题,因为\ u字符是常用的。