java.lang.ClassNotFoundException al ejecutar java -jar
Estoy usando hormiga para construir mibuild.xml
archivo, se compila bien, pero luego obtener un tiempo de ejecuciónjava.lang.NoClassDefFoundError
cuando se ejecuta el tarro resultante a través de "java -jar my_jar.jar
". Parece que esto surge mucho pero ninguna de las soluciones de las preguntas relacionadas funcionó para mí.
Mi ruta de clase parajavac
contiene solo/usr/local/lib/libthrift.jar
"y la principal.java
archivo importa un montón de paquetes de ahorro, tales comoorg.apache.thrift.transport.TTransportException
.
Cuando intento ejecutar el programa a través de:
java -jar MyClass.jar
, Me sale el error:
Exception in thread "main" **java.lang.NoClassDefFoundError**: org/apache/thrift/transport/TTransportException
Caused by: java.lang.ClassNotFoundException: org.apache.thrift.transport.TTransportException
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: **MyClass**. Program will exit.
Aquí están las cosas que he probado hasta ahora que no funcionan:
añadiendo una bandera en la línea de comando como "java-cp /usr/local/lib/libthrift.jar
-jar my_jar.jar
", el resultado es el mismo error que el anterior
añadiendo<attribute name="Class-Path" value="./:/usr/local/lib/libthrift.jar"/>
dentro de mi tarromanifest>
etiqueta, el resultado es el mismo error que el anterior
añadiendo-Xbootclasspath/a:/usr/local/lib/libthrift.jar:./
a la línea de comandos de java. resuelve el primer error pero aparece un error diferente:
Excepción en el hilo "main" java.lang.NoClassDefFoundError: org / apache / log4j / Logger en org.apache.thrift.transport.TServerSocket. <clinit> (TServerSocket.java:36) en MyClass.start (Unknown Source) en MyClass .main (Fuente Desconocida)
EDITAR:
Si comento el código que crea una instancia de las clases faltantes pero dejo las importaciones, el código se ejecuta correctamente.
EDITAR:
Trasladé mis clases de java a un servidor e hice referencia a la clase principal con el servidor en el atributo de manifiesto, pero eso no solucionó nada.