Usar jar externo

Olá juggers…

Estou com um problema… tenho um aplicativo que utiliza 5 arquivos .jar externos a aplicação.

Todos eles estao em uma pasta definida. (C:\Program Files\Shared)

Fiz o sistema utilizando NetBeans.

Ao gerar o .jar do meu aplicativo e rodar fora do netbeans, ocorre um erro pois ele não encontra algumas classes que estão nos arquivos .jar da pasta citada acima.

como seria, pela linha de comando para rodar esse aplicativo?
Tentei utilizando java -cp “C:\Program Files\Shared\nomeDoJar.jar; C:\Program Files\Shared\nomeDoOutroJar.jar” -jar Meuaplicativo.jar. O erro continua…

Teria uma forma de eu indicar só o nome da pasta ao invés de ter que declarar cada jar que eu estou usando?

A sintaxe acima está correta?!

abração pessoal…

Dica: Crie um arquivo de manifesto para o jar do seu aplicativo. Nele vc define os dados do seu arquivo jar, como dependencias de outras bilbiotecas.

Coloque o caminho das bibliotecas necessarias no atributo Class-Path do seu manifesto.

Tem um tutorial aqui no guj que ira te ajudar a criar esse arquivo:
http://www.guj.com.br/java.tutorial.artigo.42.1.guj

Isso deve resolver.

já olhei esse tutorial… a minha duvida é qts classpath meu manifest pode ter…

ele está assim:

Name: br/offline

Class-Path: “C:/Program Files/messageService.jar”
Class-Path: “C:/Program Files/Shared.jar”
Class-Path: “C:/Program Files/subscription.jar”
Class-Path: “C:/Program Files/widgets.jar”
Class-Path: “C:/Program Files/workflow.jar”
Class-Path: “C:/Program Files/xalan.jar”
Class-Path: “C:/Program Files/xercesImpl.jar”
Class-Path: “C:/Program Files/xforms.jar”
Class-Path: “C:/Program Files/XformsCommon.jar”
Class-Path: “C:/Program Files/xml-apis.jar”
Class-Path: “C:/Program Files/xmlParserAPIs.jar”
Class-Path: “C:/Program Files/xtrim-api.jar”
Class-Path: “C:/Program Files/ll-MB.jar”
Class-Path: “C:/Program Files/bpmutil.jar”
Class-Path: “C:/Program Files/bsf.jar”
Class-Path: “C:/Program Files/castor-0.9.5.2.jar”
Class-Path: “C:/Program Files/ci.jar”
Class-Path: “C:/Program Files/Dcollaboration.jar”
Class-Path: “C:/Program Files/commons-jxpath-1.1.jar”
Class-Path: “C:/Program Files/ctsTransform.jar”
Class-Path: “C:/Program Files/ctsTransformImpl.jar”

[quote=kaabah]já olhei esse tutorial… a minha duvida é qts classpath meu manifest pode ter…

ele está assim:

Name: br/offline

Class-Path: “C:/Program Files/messageService.jar”
Class-Path: “C:/Program Files/Shared.jar”
Class-Path: “C:/Program Files/subscription.jar”
Class-Path: “C:/Program Files/widgets.jar”
Class-Path: “C:/Program Files/workflow.jar”
Class-Path: “C:/Program Files/xalan.jar”
Class-Path: “C:/Program Files/xercesImpl.jar”
Class-Path: “C:/Program Files/xforms.jar”
Class-Path: “C:/Program Files/XformsCommon.jar”
Class-Path: “C:/Program Files/xml-apis.jar”
Class-Path: “C:/Program Files/xmlParserAPIs.jar”
Class-Path: “C:/Program Files/xtrim-api.jar”
Class-Path: “C:/Program Files/ll-MB.jar”
Class-Path: “C:/Program Files/bpmutil.jar”
Class-Path: “C:/Program Files/bsf.jar”
Class-Path: “C:/Program Files/castor-0.9.5.2.jar”
Class-Path: “C:/Program Files/ci.jar”
Class-Path: “C:/Program Files/Dcollaboration.jar”
Class-Path: “C:/Program Files/commons-jxpath-1.1.jar”
Class-Path: “C:/Program Files/ctsTransform.jar”
Class-Path: “C:/Program Files/ctsTransformImpl.jar”
[/quote]

Qual versão do NetBeans que vc está usando ?

5.0

[quote=kaabah]já olhei esse tutorial… a minha duvida é qts classpath meu manifest pode ter…

[/quote]

Pode ter vários, quantos forem necessários, mas a declaração correta seria assim:

Class-Path: C:/Program Files/messageService.jar C:/Program/Shared.jar C:/Program Files/subscription.jar ...

ou seja não faça uma linha Class-Path para cada jar e sim uma linha só e cada jar separa por um espaço.

A melhor prática seria dentro da sua aplicação (mesmo sendo desktop) criar uma pasta lib e colocar seus jar ali dentro para falicitar a distribuição do seu aplicativo.

Ficaria algo como:

Class-Path: lib/messageService.jar lib/Shared.jar lib/subscription.jar ...

Funcionaria corretamente.

Entendi… li num artigo também que “Class-Path:” só aceita caminhos relativos… Como vc falou para fazer… acho que a saida vai ser essa mesmo…

Valeu as dicas aí…

abração!

Pessoal ta dando problema com o meu tb.
eu fiz o seguinte manifest:

Manifest-Version: 1.0
Main-Class: com.marcianogoncalves.agenda.graficos.Agenda
Class-Path: /WEB-INF/lib/hibernate3.jar /WEB-INF/lib/jta.jar /WEB-INF/lib/antlr-2.7.6.jar /WEB-INF/lib/asm.jar /WEB-INF/lib/c3p0-0.9.1-pre6.jar /WEB-INF/lib/cglib-2.1.jar /WEB-INF/lib/commons-collections-2.1.1.jar /WEB-INF/lib/commons-logging-1.0.4.jar /WEB-INF/lib/dom4j-1.6.jar /WEB-INF/lib/hsqldb.jar

So que da o seguinte erro:

Exception in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError: org/hiber
nate/Session
at com.marcianogoncalves.agenda.bo.AgendaBO.(AgendaBO.java:24)
at com.marcianogoncalves.agenda.graficos.Agenda$6.actionPerformed(Agenda
.java:696)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour
ce)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Alguem pode me ajudar??