我现在面临一个问题,当我需要分发我的Java应用程序,创建使用NetBeans 6.8。我有gettext的类文件做了一些翻译文件 -

- 用的msgfmt从gettext包(这里没有问题shell脚本在运行MSYS)提出与下面的脚本
PO_FILES=`find . -iname "*_*.po"`
rm -f *.class

for PO_FILE in $PO_FILES; do
  CLASS_NAME=`echo $PO_FILE | sed "s/\.po$//" | sed "s/^.*\///"`
  echo "Compiling $PO_FILE to class $CLASS_NAME"
  msgfmt --java2 $PO_FILE -r $CLASS_NAME -d .
done

下面是目录结构:

main.jar
lib/translate/Messages_fr$1.class
lib/translate/Messages_fr.class 
lib/*.jar (many needed libraries - they work)

在清单文件有以下的类路径:

lib/xxx.jar ... lib/translate ... lib/yyy.jar (jar files are not the problem)

在应用程序的工作,而不只是其不能被加载翻译文件任何问题。装载部分是以下的(客户端希望法语翻译):

Locale.setDefault(Locale.FRANCE);
myResources = ResourceBundle.getBundle("Messages");

请注意:试图用jar文件只运行时会出现此问题(从NetBeans中运行效果良好,运行jar文件(Java的罐子main.jar文件)时,在命令行编译的类,但也不能正常工作运行

有趣的是,如果我从清单文件修改类路径,并添加我没有这个问题。“”路径到类路径和具有该目录结构:

main.jar
lib/translate/Messages_fr$1.class
lib/translate/Messages_fr.class 
lib/*.jar (many needed libraries - they work)
Messages_fr$1.class
Messages_fr.class

我使用Windows与下面的Java版本:

C:\>java -version
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)

D:\Program Files\Java\jdk1.6.0_17\bin>java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)

我明白任何帮助,因为这成为令人沮丧。

感谢您,

尤利安

有帮助吗?

解决方案

(如在注释中描述)的实际问题是缺少/在类从jar文件路径。例如只有这样的路径:路径/ mypath中是不够的。我需要添加一个/(路径/ mypath中/),使其工作

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top