Problemas com Makefile

Estou com o seguinte problema:

Quero fazer um makefile que além de compilar os .java, também execute o comando export CLASSPATH=.:fg-2.2.0.jar, pois se faço só javac -classpath .:fg-2.2.0.jar teste.java, ele apenas compila, mas na hora de rodar ele dá o seguinte erro:

Exception in thread “main” java.lang.NoClassDefFoundError: fg/kernel/model/variables/Variable
Caused by: java.lang.ClassNotFoundException: fg.kernel.model.variables.Variable
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: teste. Program will exit.

Porém se dou o export na linha de comando ele roda. Teria como fazer isso no makefile?

O comando export é um comando especial do shell que não pode ser executado em uma makefile.
Crie um shell script, mais ou menos assim:

export CLASSPATH=.:fg-2.2.0.jar

E o execute assim (digamos que seu shell script tenha o nome “meushell” e você tenha dado as permissões corretas):

. ./meushell

Observe que para invocar o shell script você precisa usar um ponto, sozinho. Esquisito, não?

Variáveis de ambiente no Unix/Linux são esquisitas mesmo.

Agora deu certo!

Obrigado!