Executable jar

Status
Niet open voor verdere reacties.

Roxxas

Gebruiker
Lid geworden
23 dec 2008
Berichten
8
Hallo allemaal,
Ik zit met een probleem. Ik probeer al een lange tijd een executable jar te maken die ook daadwerkelijk wat doet. Ik zit elke keer met het probleem dat hij het CLASSPATH niet kan vinden.
Ik maak gebruik van redelijk wat external jars ( JPOX ) en ik krijg het maar niet voor elkaar om het draaiend te krijgen.
Binnen Eclipse draaid mijn programma als een tierelier maar er buiten komt hij nog niet eens voorbij het login scherm.

mijn jar staat op dit moment op c:\users\hemeru\desktop
de naam van de jar is Payroll.jar

Ik heb de volgende external jars in gebruik.
lib/TableLayout.jar
lib/bcel-5.2.jar
lib/jdo2-api-2.1.jar
lib/jpox-core-1.2.2.jar
lib/jpox-db4o-1.2.2.jar
lib/jpox-enhancer-1.2.3.jar
lib/jpox-jca-1.2.2.jar
lib/jpox-rdbms-1.2.2.jar
lib/mysql-connector-java-5.1.7-bin.jar
lib/log4j-1.2.15.jar
lib/TableLayout.jar
org.eclipse.jdt.launching.JRE_CONTAINER ( staat er ook bij geen idee wat ie doet )

mijn project zelf staat in de dir
e:\omondo\Projecten\Payroll

Ik krijg de volgende foutmelding bij het inloggen.

Microsoft Windows [versie 6.0.6001]
Copyright (c) 2006 Microsoft Corporation. Alle rechten voorbehouden.

C:\Users\Hemeru\Desktop>java -jar payroll.jar
Code:
0 [AWT-EventQueue-0] DEBUG JPOX.ClassLoading - Class org.eclipse.core.runtim 
e.RegistryFactory was not found in the CLASSPATH [Class resolver called from org 
.jpox.plugin.PluginRegistryFactory.newInstance (line=90)] 
2 [AWT-EventQueue-0] DEBUG JPOX.Plugin - Plugin Registry "org.jpox.plugin.Ec 
lipsePluginRegistry" not found. Falling back to JPOX registry. Reason : Class or 
g.eclipse.core.runtime.RegistryFactory was not found in the CLASSPATH. Please ch 
eck your specification and your CLASSPATH.. 
5 [AWT-EventQueue-0] DEBUG JPOX.Plugin - Using PluginRegistry org.jpox.plugi 
n.NonManagedPluginRegistry 
14 [AWT-EventQueue-0] DEBUG JPOX.Plugin - Registering bundle null version nul 
l at URL file:/C:/Users/Hemeru/Desktop/payroll.jar. 
74 [AWT-EventQueue-0] DEBUG JPOX.Plugin - Loading extension points from plug- 
in file jar:file:/C:/Users/Hemeru/Desktop/payroll.jar!/plugin.xml. 
98 [AWT-EventQueue-0] DEBUG JPOX.Plugin - Loading extensions from plug-in fil 
e jar:file:/C:/Users/Hemeru/Desktop/payroll.jar!/plugin.xml. 
110 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.persisten 
ce_properties" not registered, but plugin "" defined in file:/C:/Users/Hemeru/De 
sktop/payroll.jar refers to it. 
110 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.cache_lev 
el1" not registered, but plugin "" defined in file:/C:/Users/Hemeru/Desktop/payr 
oll.jar refers to it. 
112 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.cache_lev 
el2" not registered, but plugin "" defined in file:/C:/Users/Hemeru/Desktop/payr 
oll.jar refers to it. 
113 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.jta_locat 
or" not registered, but plugin "" defined in file:/C:/Users/Hemeru/Desktop/payro 
ll.jar refers to it. 
114 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.store_dat 
astoreidentity" not registered, but plugin "" defined in file:/C:/Users/Hemeru/D 
esktop/payroll.jar refers to it. 
115 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.store_map 
ping" not registered, but plugin "" defined in file:/C:/Users/Hemeru/Desktop/pay 
roll.jar refers to it. 
116 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.store_val 
uegenerator" not registered, but plugin "" defined in file:/C:/Users/Hemeru/Desk 
top/payroll.jar refers to it. 
117 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.api_adapt 
er" not registered, but plugin "" defined in file:/C:/Users/Hemeru/Desktop/payro 
ll.jar refers to it. 
119 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.classload 
er_resolver" not registered, but plugin "" defined in file:/C:/Users/Hemeru/Desk 
top/payroll.jar refers to it. 
120 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.autostart 
" not registered, but plugin "" defined in file:/C:/Users/Hemeru/Desktop/payroll 
.jar refers to it. 
121 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.callbackh 
andler" not registered, but plugin "" defined in file:/C:/Users/Hemeru/Desktop/p 
ayroll.jar refers to it. 
123 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.metadata_ 
handler" not registered, but plugin "" defined in file:/C:/Users/Hemeru/Desktop/ 
payroll.jar refers to it. 
124 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.metadata_ 
manager" not registered, but plugin "" defined in file:/C:/Users/Hemeru/Desktop/ 
payroll.jar refers to it. 
126 [AWT-EventQueue-0] WARN JPOX.Plugin - Extension Point "org.jpox.store_exp 
ression_scalarexpression" not registered, but plugin "" defined in file:/C:/User 
s/Hemeru/Desktop/payroll.jar refers to it. 
javax.jdo.JDOFatalInternalException: Unexpected exception caught. 
at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementatio 
n(JDOHelper.java:1131) 
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:789) 
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:695) 
at commandprocessor.CmdProc.setUpConnection(CmdProc.java:122) 
at commandprocessor.CmdProc.setConnectionParameters(CmdProc.java:156) 
at controller.ConnectController.actionPerformed(ConnectController.java:2 
6) 
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.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) 
NestedThrowablesStackTrace: 
java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at javax.jdo.JDOHelper$16.run(JDOHelper.java:1839) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.jdo.JDOHelper.invoke(JDOHelper.java:1834) 
at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementatio 
n(JDOHelper.java:1110) 
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:789) 
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:695) 
at commandprocessor.CmdProc.setUpConnection(CmdProc.java:122) 
at commandprocessor.CmdProc.setConnectionParameters(CmdProc.java:156) 
at controller.ConnectController.actionPerformed(ConnectController.java:2 
6) 
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.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) 
Caused by: org.jpox.exceptions.JPOXUserException: Persistence process has been s 
pecified to use a ClassLoaderResolver of name "" yet this has not been found by 
the JPOX plugin mechanism. Please check your CLASSPATH and plugin specification. 

at org.jpox.OMFContext.getClassLoaderResolver(OMFContext.java:296) 
at org.jpox.OMFContext.<init>(OMFContext.java:158) 
at org.jpox.ObjectManagerFactoryImpl.initialiseOMFContext(ObjectManagerF 
actoryImpl.java:148) 
at org.jpox.jdo.JDOPersistenceManagerFactory.initialiseProperties(JDOPer 
sistenceManagerFactory.java:293) 
at org.jpox.jdo.JDOPersistenceManagerFactory.<init>(JDOPersistenceManage 
rFactory.java:219) 
at org.jpox.jdo.JDOPersistenceManagerFactory.createInstance(JDOPersisten 
ceManagerFactory.java:229) 
at org.jpox.jdo.JDOPersistenceManagerFactory.getPersistenceManagerFactor 
y(JDOPersistenceManagerFactory.java:132) 
... 38 more 
fout in database gegegevens
iemand enig idee wat ik fout doe? Heb al vanalles geprobeerd maar niets mag
baten.
Ik hoop dat jullie genoeg informatie hebben en anders hoor ik het graag.
Bij voorbaat dank,
Swen:)
 
Laatst bewerkt:
Onduidelijkheid

Zo te zien weet niemand hier raad mee,
kan iemand me dan uitleggen hoe ik een classpath kan maken/opstellen?
Ik heb namelijk nog nooit een classpath hoeven maken.
Alvast bedankt,
Vriendelijke groet, Swen
 
Hi Roxxas,

Ik heb zelf ook nog nooit een jar gemaakt, maar een classpath gebruik je bijvoorbeeld ook bij het maken van een database verbinding met jdbc.

Een classpath ziet er dan bijvoorbeeld zo uit :

CLASSPATH=/usr/lib/jvm/java-6-sun/lib/mysql-connector-java-3.1.14-bin.jar

Kijk ook eens naar een eerdere discussie van mij:

http://www.helpmij.nl/forum/showthread.php?t=391589
 
jdbc

Hey Clemens,
Bedankt voor je reactie.
Ik heb het eens doorgelezen en ik heb al mijn benodigde Jars toegevoegd aan mijn
project. Ik maak wel gebruik van Eclipse maar dat moet niet zo veel verschil bieden.
Het gekke van alles is dat binnen mijn Eclipse workspace, werkt mijn applicatie als een zonnetje. Zodra ik dus probeer om er een exe.Jar van te maken en dees probeer te gebruiken gaat hij over de kop.
Ik heb al geprobeerd om aan de hand van voorbeelden van b.v. de IBM site en Sun mijn eigen classpath te maken maar dat mocht ook niet baten.
Vandaar dat ik een beetje ten einde raad ben wat ik moet doen.
In ieder geval bedankt voor je reactie :D
Mvgr. Roxx
 
Maar als je vanaf de map "workspace" van eclipse (daar werk ik overigens op mijn werk ook mee) een bepaald classpath hebt is dat toch anders als je het vanaf een andere locatie draait.
Ik weet het ook niet hoor, ik probeer maar een beetje mee te denken. Ik zal het straks waarschijnlijk ook gaan tegenkomen :p als ik mijn (eerste) standalone applicatie af heb.

Misshien moet je voor classpath een method maken:

getClassPath() {

return classPath;
}

of constanten aanmaken voor die classpath's

protected static final String CLASSPATH_FOR_SOMETHING = "blala/tralala/jajaj/hier";

Dit om flexibeler met je app om te kunnen gaan.

Ik hoor graag als je meer info / antwoorden / vragen hebt.
Ik ben erg nieuwsgierig :)

Succes.


[EDIT]

Wat overigens ook zou kunnen als je met een database werkt is dat je een GRANT moet uitvoeren op de te gebruiken SQL-server.

[/EDIT]
 
Laatst bewerkt:
Bedankt

Bedankt voor je extra informatie.
Ik zal eens kijken of ik er wat mee kan doen.
Heb het nog eens geprobeerd om een simpel project te maken met sommige jars
en het vreemde is dat die programma's wel in een jar runnen. Zodra ik JPOX implementeer begint hij dus te zeuren dat het classpath niet goed is.
Heb al geprobeerd om informatie te krijgen op de JPOX site maar die is nu ten einde aangezien het nu allemaal datanecleus ofzoiets is.. ben je ook lekker mee.
Ik vecht nog steeds door, misschien dat ik maar eens over moet gaan op dat andere.
Zodra ik dat voor elkaar heb laat ik nog wel wat horen.
Mvgr.
Roxxas:D
 
Als je in eclipse werkt kan je het gewoon zo doen:
File --> Export --> Java --> Jar file.
Zo heb ik het in ieder geval gedaan en het werkt prima.
 
Als je in eclipse werkt kan je het gewoon zo doen:
File --> Export --> Java --> Jar file.
Zo heb ik het in ieder geval gedaan en het werkt prima.

Bedankt voor je reactie.
Dit is hoe ik het in eerste instantie ook heb gedaan. Wanneer ik geen Jars van derde gebruik is het ook geen probleem en werkt het op de manier die je beschreven hebt.
Maar wanneer ik dus die external jars toevoeg, tot nu toe alleen bij die van JPOX, lukt het niet meer.
Vandaar.
Bedankt voor het meedenken,
Mvgr. Roxxas
 
Classpath zijn alle directories waar java vm gaat zoeken als er een bepaalde class geladen moet worden.
Dus als je externe libs gebruikt moet de locatie van deze lib in je classpath staan anders zal de jvm ze niet kunnen vinden.

De export naar jar werkt niet goed met externe libs er was ooit een plugin Fat-jar die beter werkt, maar weet niet of deze nog bestaat.
Maar je kan beter Ant gebruiken voor dit sort taken, dit is een builder die een XML file gebruikt (build.xml).
In deze file moet je aangeven waar je libs staan. Ant zal nu voor jou een jar filemaken die wel werkt.
Ant zit standaard in Eclipse. maar het gebruik er van is niet eenvouding. Je moet maar even googlen voor een voorbeeld build.xml bestand.

succes
 
ant

Bedankt voor je tip!
Ik zal er meteen is naar kijken of dit wel wil werken!
Ben benieuwd.
Trouwens Fat-jar bestaat nog steeds :) Weet je dat ook weer.
Mvgr. Roxxas
 
Iets verder

Ik ben er nog eens druk mee bezig geweest en ik
lijk nu heel iets verder te zijn. Ik ben erachter gekomen dat het probleem ligt
in de ClassLoaderResolver. Hij schijnt te zoeken naar een resolver met de naam ""
maar kan deze niet vinden. Ik vind het nog steeds raar dat hij deze melding niet geeft
binnen mijn workspace.

Ik ben hierachter gekomen door mijn JPOX properties file in een try-catch blok te zetten
nu gaat de rest van mijn jar wel gewon door, kan op schermen klikken e.d. maar
de verbinding met de database doet het dus nog steeds niet.
Iemand ervaring met de ClassLoaderResolver van JPOX? Want van de jpox site wordt ik
ook niet veel vrolijker xD
Met vriendelijke groet,
Swen
 
Wohoo

Ik heb het gevonden,
het probleem lag bij het aanroepen van de verschillende libraries. Als je het exporteert via
Eclipse word elke keer de manifest data overschreven door de laatst toegevoegde library.
Vandaar dat hij dus niet de benodigde jars kon vinden.

In mijn situatie is het opgelost met het toevoegen van het classpath, alleen dan verwijs ik
naar een .class en niet naar een jar

Hierbij mijn antwoord, met de jars van hierboven en een enkele extra die ik ondertussen
weer heb gebruikt.

java -cp "bin";"lib\jcalendar-1.3.2.jar";"lib\TableLayout.jar";"lib\jdo2-api-2.1.jar";"lib\jpox-core-1.2.2.jar";"lib\jpox-rdbms-1.2.2.jar";"lib\log4j-1.2.15.jar";"lib\mysql-connector-java-5.1.7-bin.jar";. main/Main -Dlog4j.configuration=file:log4j.properties

Hoop dat je er wat mee kan,
vriendelijke groet,
Roxxas
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan