¡PROBLEMAS!: InfixToRPN2.java:11: cannot find symbol symbol: class RPN2 y Exception in thread «main» java.lang.NoClassDefFoundError:

Hace poco al querer compilar un proyecto para convertir expresiones en notación infija a polaca inversa o postfija con varias clases desde terminal en GNU/Linux me entero que mi configuración en java no era la adecuada. Al querer compilar me tiraba el siguiente error:

PrecedentObjectStack.java:24: cannot find symbol
symbol: class RPN2
public class InfixToRPN2 extends RPN2

Para cualquier objeto fuera de la clase actual; al momento recordé la estructura de mi proyecto y cambié todo al mismo directorio, además de comentar la directiva donde estructuraba los archivos por paquetes, quedando así:

//package infixtorpn

No dió resultado, tiró el mismo error y me di a la tarea de investigar las opciones del compilador de java. Entre ellas está la de indicar la ruta de las clases así que compilé de la siguiente manera:

javac PrecedentObjectStack.java

Voila! Festejo momentáneo porque al llegar a mi clase principal, me tiró de nuevo un error:

Exception in thread "main" java.lang.NoClassDefFoundError: InfixToRPN2

De igual manera el archivo para ejecutar clases y archivos de java tiene opcion para indicar la ruta de acceso a las clases:

java -cp . InfixToRPN2

De nuevo: Listo!

Ahora bien, cuando llegué al otro día del trabajo y cambié de directorio algunos archivos me provocó errores de compilación. Decidí en ese momento investigar sobre las variables de entorno que había visto anteriormente pero por prisa no modifiqué para no volver a tener problemas de este estilo:

JAVA_HOME="/usr/java/jdk1.6.0_25"
export JAVA_HOME

JRE_HOME="/usr/java/jdk1.6.0_25/jre"
export JRE_HOME

CATALINA_HOME="/usr/local/apache-tomcat-6.0.26"
export CATALINA_HOME

PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/sbin:/usr/games:/usr/java/jdk1.6.0_25/bin"
export PATH

CLASSPATH=".:/usr/java/jdk1.6.0_25/lib/tools.jar:/usr/java/jdk1.6.0_25/lib/dt.jar:/usr/java/jdk1.6.0_25/jre/lib/ext/mysql-connector-java-5.1.16-bin.jar:$CATALINA_HOME/lib/servlet-api.jar:$JAVA_HOME/jre/lib/ext:$CATALINA_HOME/webapps/VIVERO/WEB-INF/classes/"
export CLASSPATH

¡Al fin! Problema resuelto.

EDITADO:10 de febrero de 2012
Es necesario trabajar sin comillas para cualquiera de las variables de entorno. Ejemplo con $CLASSPATH

CLASSPATH=.
export CLASSPATH


About this entry