Estou com o seguinte problema:
Estou usando o Eclipse e SWT. No eclipse eu consigo desenhar as telas e tudo o mais normalmente e consego rodar a aplicação. Mando ele gerar .jar (coloco o SWt no Add external jars no Java Build, mandando ele gera o Manifest…) e ele gera normalmente. Na hora de rodar com: java -classpath TesteSWT.jar Login (login é a classe inicial, que eu tb mandei o eclipse definir na hora de gerar o .jar) ele apresenta o seguinte erro:
Exception in thread “main” java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Dialog
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:18
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Dialog
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:18
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
… 12 more
Busquei na internet como setar corretamente o classpath no linux, editei meu /etc/profile
o conteúdo dele é o seguinte:
/etc/profile
umask 022
PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/local/bin:/usr/games"
Set LOCALE
if [ -f /etc/sysconfig/i18n ]; then
. /etc/sysconfig/i18n
[ -n “$LANG” ] || LANG="de_DE"
export LANG
[ -n “$LC_CTYPE” ] && export LC_CTYPE || unset LC_CTYPE
[ -n “$LC_COLLATE” ] && export LC_COLLATE || unset LC_COLLATE
[ -n “$LC_MESSAGES” ] && export LC_MESSAGES || unset LC_MESSAGES
[ -n “$LC_NUMERIC” ] && export LC_NUMERIC || unset LC_NUMERIC
[ -n “$LC_MONETARY” ] && export LC_MONETARY || unset LC_MONETARY
[ -n “$LC_TIME” ] && export LC_TIME || unset LC_TIME
[ -n “$LC_ALL” ] && export LC_ALL || unset LC_ALL
[ -n “$LANGUAGE” ] && export LANGUAGE || unset LANGUAGE
[ -n “$LINGUAS” ] && export LINGUAS || unset LINGUAS
[ -n “$_XKB_CHARSET” ] && export _XKB_CHARSET || unset _XKB_CHARSET
if [ -n “$SYSFONTACM” ]; then
case $SYSFONTACM in
iso01*|iso02*|iso15*|koi*|latin2-ucw*)
if [ “$TERM” = “linux” ]; then
if ls -l /proc/$$/fd/0 2>/dev/null | grep – ‘-> /dev/tty[0-9]*$’ >/dev/null 2>&1; then
echo -n -e ‘\033(K’ > /proc/$$/fd/0
fi
fi
;;
esac
fi
unset SYSFONTACM
fi
END LOCALE
enable bash completion in interactive shells
[ “$PS1” -a -f /etc/bash_completion ] && . /etc/bash_completion
PS1="\u@\h:\w\$ "
alias which="type -path"
alias where="type -all"
alias ll="ls -l --color=auto"
alias rm="rm -i"
alias mv="mv -i"
alias cp="cp -i"
alias la="ls -la --color=auto"
alias ls=“ls --color=auto”
Variáveis de ambiente utilizadas pelo Java
JAVA_HOME=/usr/jdk1.6.0_05
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CLASSPATH=.:$JAVA_HOME/lib
export CLASSPATH
MANPATH=$MANPATH:$JAVA_HOME/man
export MANPATH
ou seja, se vc olharem na última parte ele tem as variáveis do java. Detalhe: eu joguei na pasta /usr/jdk1.6.0_05/lib os pacotes swt.jar e swt-debug pra ver se funcionava e nada -_-’
Alguma idéia de solução?
Outra pergunta pertinente: não há uma forma de eu colocar o pacote do swt junto com a distribuição da aplicação? a cada máquina que eu instalar a aplicação eu precisarei instalar tbm o SWT e outras APIs?
Grato