Pergunta

Eu estou enfrentando um problema quando eu preciso distribuir minha aplicação java, criado usando o NetBeans 6.8. Eu tenho alguns arquivos de tradução feitas com gettext como arquivos de classe - feito com msgfmt do pacote gettext com o script seguinte (executar script shell sob msys - sem problemas aqui)

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

Aqui está a estrutura de diretórios:

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

O arquivo de manifesto tem a seguinte classe-path:

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

O aplicativo funciona sem qualquer problema, exceto os arquivos de tradução que não podem ser carregados. A parte de carregamento é a seguinte (o cliente quer uma tradução francesa):

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

Nota: Este problema só aparece quando se tenta executar com o arquivo jar (em execução do NetBeans funciona bem, correndo de linha de comando as classes compiladas trabalhar também, mas não ao executar o arquivo jar (java -jar main.jar) <. / p>

A parte engraçada é que eu não tenho esse problema se eu modificar a classe-path do arquivo de manifesto e adicionar "" caminho para o classpath e ter esta estrutura de diretórios:

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

Estou usando o Windows com as seguintes versões 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)

Agradeço qualquer ajuda, pois isso torna-se frustrante.

Obrigado,

Iulian

Foi útil?

Solução

O problema real (como descrito nos comentários) foi a / faltando no caminho de classe do arquivo jar. Por exemplo tendo apenas o caminho como este: path / myPath não era suficiente. I necessário para adicionar a / (path / myPath /) para fazê-lo funcionar

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top