Erro na aplicação com JAR

2 respostas
S

Bom dia pessoal, beleza?

Estou com um pequeno problema.

Tenho uma aplicação desktop. Nela eu criei um HELP em HTML (onde as paginas HTML estão dentro do Projeto), e para abrir essa pagina eu uso o seguinte comando:

AbreBrowser     browser  =    new AbreBrowser();
                
                String URL = (""+(AbreBrowser.class.getResource("help.html")));
                browser.AbreBrowser(URL);

Quando eu executo a aplicação pelo NetBeans, ele funciona corretamente, abre o Browser com o meu help.html, porém quando eu gero meu Jar e executo ele não funciona, a mensagem de erro é a seguinte:

C:\Documents and Settings\lemachado>java -jar "C:\Documents and Settings\lemacha do\My Documents\Leonardo\UNIB\PARTBIT\PARTBIT\dist\PARBIT.jar" java.io.IOException: Failed to open jar:file:/C:/Documents%20and%20Settings/lema chado/My%20Documents/Leonardo/UNIB/PARTBIT/PARTBIT/dist/PARBIT.jar!/partbit/help /help.html. Error message: Access is denied.

at sun.awt.windows.WDesktopPeer.ShellExecute(Unknown Source)
at sun.awt.windows.WDesktopPeer.browse(Unknown Source)
at java.awt.Desktop.browse(Unknown Source)
at partbit.help.AbreBrowser.AbreBrowser(AbreBrowser.java:41)
at partbit.frmMain$TratadorActMenus.actionPerformed(frmMain.java:1127)
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.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.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.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(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 ja teve algum erro do tipo? Podem me ajudar?

Grato.

2 Respostas

T

Você está usando o método browse da classe Desktop. Ele requer uma URI, mas ela deve se referir a um arquivo no disco (por isso é que funcionava no NetBeans) ou uma URL na Internet (se você passar “http://” ou “https://”). É que esse método chama o browser e simplesmente passa a URL. Como o browser não sabe abrir JAR (só arquivos no disco, ou URLs http ou https) então dá esse problema.

S

thingol:
Você está usando o método browse da classe Desktop. Ele requer uma URI, mas ela deve se referir a um arquivo no disco (por isso é que funcionava no NetBeans) ou uma URL na Internet (se você passar “http://” ou “https://”). É que esse método chama o browser e simplesmente passa a URL. Como o browser não sabe abrir JAR (só arquivos no disco, ou URLs http ou https) então dá esse problema.

Certo, entendi.

Me tire outra duvida por favor.

Quando eu faço:

AbreBrowser.class.getResource("help.html"))

Ele pega o caminho da minha classe AbreBrowser, que esta no mesmo pacote dos meus HTML. Debugando fiz o teste e ele pega este caminho:

“file:/C:/Documents%20and%20Settings/lemachado/My%20Documents/Leonardo/UNIB/PARTBIT/PARTBIT/build/classes/partbit/help/help.html”

No caso esse caminho deve ser dinâmico para cada usuário.

Estou errado? Ou devo fazer isso de outra forma?

Grato

Criado 18 de dezembro de 2007
Ultima resposta 18 de dez. de 2007
Respostas 2
Participantes 2