Pregunta

He estado intentando ejecutar un archivo jar, llamémoslo test.jar, que usa Sybase jconn3.jar en un sistema Unix.

He creado un archivo MANIFEST.MF que tiene lo siguiente:

Class-Path: $SYBASE/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar

Esto da un ClassNotFoundError. $ SYBASE es la variable del sistema que apunta a / opt / sybase13; También probé lo siguiente:

Class-Path: /opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar

y

Class-Path: opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar

Sin embargo, si copio el archivo jconn3.jar de las clases $ SYBASE / jConnect-6_0 / en el mismo directorio que test.jar, y actualizo mi MANIFEST.MF para que lea como sigue:

Class-Path: jconn3.jar commons-net-1.3.0.jar

La aplicación se ejecuta como se esperaba.

Ahora, he podido verificar que el archivo jconn3.jar funciona copiándolo localmente; mi archivo MANIFEST.MF incluye la ruta a mi clase principal, por lo que no se trata aquí.

¿Cuál crees que podría ser el problema? He estado mirando esto por mucho tiempo ahora. Gracias!

¿Fue útil?

Solución

Las entradas en la ruta de clase son relativas al JAR en el que están incrustadas (que tiene trabajando) o son URL. Para que sus rutas absolutas funcionen, deberá convertirlas a URL, por ejemplo,

file:/opt/sybase13/...

No hay mecanismo para usar variables.

Aunque la especificación JAR no lo dice claramente, las URL de esquema absoluto: funcionan en el atributo class-path.

Otros consejos

Las variables de entorno no son leídas por el cargador de clases AFAIK. Sin embargo, podría agregar el jar en un script de configuración

Según las especificaciones, las entradas están relacionadas con el jar, no son absolutas:

  

Clase-Ruta:

     

El valor de este atributo especifica las URL relativas de las extensiones o bibliotecas que necesita esta aplicación o extensión. Las URL están separadas por uno o más espacios. El cargador de clase de aplicación o extensión utiliza el valor de este atributo para construir su ruta de búsqueda interna.

http://java.sun.com /j2se/1.5.0/docs/guide/jar/jar.html # Especificación del manifiesto

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top