Java / OpenJDK: ¿Cómo añadir a la ruta de clase JAR

Gordon Shumway:

Estoy funcionando con un archivo JAR-tercera parte (sin interfaz de usuario) en la línea de comando como el siguiente:

 /usr/bin/java -jar exchange-sync.jar

Después de mi distribución (Debian Buster) actualizado a la última OpenJDK 11 este comando ya no está funcionando. Esto es lo que ahora estoy haciendo:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/ws/http/HTTPException
        at microsoft.exchange.webservices.data.core.ExchangeService.findItems(ExchangeService.java:976)
        at microsoft.exchange.webservices.data.core.ExchangeService.findAppointments(ExchangeService.java:1264)
        at microsoft.exchange.webservices.data.core.ExchangeService.findAppointments(ExchangeService.java:1285)
        at com.zerodes.exchangesync.exchange.ExchangeSourceImpl.getAllAppointments(ExchangeSourceImpl.java:399)
        at com.zerodes.exchangesync.sync.SyncCalendarsImpl.generatePairs(SyncCalendarsImpl.java:45)
        at com.zerodes.exchangesync.sync.SyncCalendarsImpl.syncAll(SyncCalendarsImpl.java:98)
        at com.zerodes.exchangesync.App.main(App.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.ws.http.HTTPException
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)

Ya he descubierto que ahora tengo que instalar el jaxws-apipaquete Debian, que proporciona las clases que faltan en /usr/share/java/jaxws-api.jar.

¿Con qué línea de comandos de Java que necesito a fin de incluir las clases del archivo jar instalado? Ya he probado esto, pero estoy consiguiendo el mismo error:

/usr/bin/java -cp /usr/share/java/jaxws-api.jar -jar exchange-sync.jar

Por cierto: soy un novato Java y no quiero ensuciar con recompilar cosas. También estoy seguro de que javax.xml.ws.http.HTTPExceptionreside en el jaxws-api.jar, ya que han navegado por ese archivo JAR con vim y encontró que la clase en el mismo.

Gordon Shumway:

Aceptar, por fin cuenta de esto por mí mismo. Esta es la forma correcta de agregar módulos, que el JAR espera estar presente:

/usr/bin/java --module-path /usr/share/java/jaxws-api.jar --add-modules jaxws.api -jar exchange-sync.jar

Por lo que en realidad no tiene nada que ver con la ruta de clases, es sólo acerca de la adición del módulo.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=206981&siteId=1
Recomendado
Clasificación