2010-12-01 11 views
5

में मैं एक स्टैंड-अलोन जावा एप्लिकेशन विकसित कर रहा हूं जो eclipselink का उपयोग करता है। जब मैं ग्रहण आईडीई से ऐप निष्पादित करता हूं तो यह ठीक है। लेकिन मैंने निष्पादन योग्य जेएआर फ़ाइल निर्यात की है, और जब से मैं ग्रहण कार्य नहीं कर सकता हूं। मैं ग्रहण समुदाय मंच here में इसी तरह के मुद्दे पाया है, लेकिन अभी तक भी काम नहीं:eclipselink PersistenceUnitLoading निष्पादन योग्य JAR

कृपया मदद,

मेरे अपवाद निम्नलिखित है:

01 dec. 2010 22:47:31,199 INFO Configuration:97 - Iniciate database 
Exception in thread "main" 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 org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa 
der.java:56) 
Caused by: Exception [EclipseLink-30005] (Eclipse Persistence Services - 2.0.2.v 
20100323-r6872): org.eclipse.persistence.exceptions.PersistenceUnitLoadingExcept 
ion 
Exception Description: An exception was thrown while searching for persistence a 
rchives with ClassLoader: [email protected] 
Internal Exception: Exception [EclipseLink-30004] (Eclipse Persistence Services 
- 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.PersistenceUnitLoad 
ingExceptionException Description: An exception was thrown while processing persistence.xml 
from URL: rsrc:../ 
Internal Exception: java.net.MalformedURLException 
     at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.ex 
ceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:126 
) 
     at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFa 
ctory(PersistenceProvider.java:133) 
     at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFa 
ctory(PersistenceProvider.java:65) 
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence. 
java:51) 
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence. 
java:33) 
     at eu.agilelabs.pillAgent.db.dam.DataManagerImplJPA.(DataManagerIm 
plJPA.java:36) 
     at eu.agilelabs.pillAgent.db.dam.DataManagerImplJPA.getInstance(DataMana 
gerImplJPA.java:47) 
     at eu.agilelabs.configuration.Configuration.(Configuration.java:98 
) 
     at eu.agilelabs.configuration.Configuration.getInstance(Configuration.ja 
va:119) 
     at eu.agilelabs.pillAgent.core.Main.main(Main.java:15) 
     ... 5 more 
Caused by: Exception [EclipseLink-30004] (Eclipse Persistence Services - 2.0.2.v 
20100323-r6872): org.eclipse.persistence.exceptions.PersistenceUnitLoadingExcept 
ion 
Exception Description: An exception was thrown while processing persistence.xml 
from URL: rsrc:../ 
Internal Exception: java.net.MalformedURLException 
     at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.ex 
ceptionProcessingPersistenceXML(PersistenceUnitLoadingException.java:117) 
     at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProces 
sor.processPersistenceXML(PersistenceUnitProcessor.java:444) 
     at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProces 
sor.processPersistenceArchive(PersistenceUnitProcessor.java:401) 
     at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProces 
sor.getPersistenceUnits(PersistenceUnitProcessor.java:310) 
     at org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.findPe 
rsistenceUnitInfoInArchive(JPAInitializer.java:149) 
     at org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.findPe 
rsistenceUnitInfoInArchives(JPAInitializer.java:136) 
     at org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.findPe 
rsistenceUnitInfo(JPAInitializer.java:125) 
     at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFa 
ctory(PersistenceProvider.java:98) 
     ... 13 more 
Caused by: java.net.MalformedURLException 
     at java.net.URL.(Unknown Source) 
     at java.net.URL.(Unknown Source) 
     at java.net.URL.(Unknown Source) 
     at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrent 
Entity(Unknown Source) 
     at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineD 
ocVersion(Unknown Source) 
     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U 
nknown Source) 
     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U 
nknown Source) 
     at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown So 
urce) 
     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Un 
known Source) 
     at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.p 
arse(Unknown Source) 
     at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProces 
sor.processPersistenceXML(PersistenceUnitProcessor.java:442) 
     ... 19 more 

मैं इस लाइन लगता है कुंजी होना चाहिए:

Internal Exception: Exception [EclipseLink-30004] (Eclipse Persistence Services 
- 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.PersistenceUnitLoad 
ingExceptionException Description: An exception was thrown while processing persistence.xml 
from URL: rsrc:../
+0

विषम, क्या त्रुटि हमेशा होती है? कृपया अपना persistence.xml शामिल करें। क्या JVM और OS आपके ग्रहण के समान है? आप इसे कैसे चला रहे हैं – James

+0

मैंने इसे हल करने में कामयाब रहे हैं। मैंने ग्रहण को जार फ़ाइल निर्यात करने के तरीके को बदल दिया। यदि यह जार में आवश्यक पुस्तकालयों को निकालता है तो सबकुछ बढ़िया काम करता है। वैसे भी धन्यवाद! – GaDo

+0

आपको एक उत्तर बनाना चाहिए जिसे आप बाद में स्वीकार करते हैं। – MRalwasser

उत्तर

3

मेरे पास है इसे हल करने में कामयाब रहे। मैंने ग्रहण को जार फ़ाइल निर्यात करने के तरीके को बदल दिया। यदि यह जार में आवश्यक पुस्तकालयों को निकालता है तो सबकुछ बढ़िया काम करता है। वैसे भी धन्यवाद!

+0

क्या आप इसे अधिक विस्तार से समझा सकते हैं कि आपने इसे – Kris

+0

कैसे तय किया है, मैं इसे "पुष्टि योग्य JAR फ़ाइल निर्यात" संवाद में "जेनरेट किए गए जेएआर में आवश्यक लाइब्रेरी निकालें" विकल्प का चयन करके समस्या का समाधान कर सकता हूं। धन्यवाद। – joanlofe

0

कुछ पृष्ठभूमि जानकारी

लिंक आपके द्वारा दिए गए कहते हैं, EclipseLink लोड हो रहा है persistence.xml समर्थन करने के लिए जब EclipseLink जार को अपने ऐप्लिकेशन के जार में अंतर्निहित है प्रतीत नहीं होता है।

जैसा कि मैं इसे समझता हूं, मानक गैर-अनुकूलित जावा रनने योग्य जार का समर्थन नहीं करता है जो एम्बेडेड जार से कक्षाएं लोड करता है। ग्रहण करने वाला चलने वाला जार आपके ऐप के जार में एक कस्टम क्लासलोडर (org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader) जोड़ कर उस सीमा को दूर करने में सक्षम है। कस्टम क्लासलोडर स्पष्ट रूप से वह जगह है जहां EclipseLink इस समस्या में चलता है।

इसके साथ, ग्रहण हेलीओस में, मैंने इसे "उत्पन्न जेएआर में आवश्यक पुस्तकालय निकालने" के बजाय "जेनरेट किए गए जेएआर के बगल में एक उप-फ़ोल्डर में आवश्यक पुस्तकालयों की प्रतिलिपि बनाने" के लिए और अधिक प्रबंधनीय पाया है।

प्रतिलिपि विकल्प चुनने से एक्लिप्सिंक जार बरकरार रहता है, क्योंकि ग्रहण के विभिन्न वर्गों को निकालने और आपके आवेदन के जार को छेड़छाड़ करने के विरोध में। सच है, आपका ऐप अब एक जार के रूप में वितरित नहीं होगा, लेकिन एक प्रबंधन क्षमता से, यह निकालने-पुस्तकालय विकल्प से बेहतर लगता है।

0

यह समस्या EclipseLink में तय किया गया है 2.3.2 मैं उन्नत बनाया है और इसे दूर

0

चला गया मैं संबंधित समाधान नहीं मिला है (अर्थात यदि आप EclipseLink 2.3.2 उपयोग नहीं कर रहे), के रूप में Bug 364748 में Gado ने उल्लेख किया , समाधान MANIFEST.MF

Eclipse-BundleShape: dir 

इस की ओर जाता है में निम्नलिखित पंक्ति जोड़ने के लिए बजाय के रूप में निर्देशिका JAR फ़ाइल है, जो persistence.xml सुलभ बना देता है के रूप में निर्यात किया जा रहा प्लग में है।

0

मैं एक्लिप्स इंडिगो के साथ एक्लिप्ससेंक 2.3.2 का उपयोग कर रहा था, और अभी भी त्रुटि प्राप्त हो रही थी।

फिर, मूर्ख की तरह, मुझे एहसास हुआ कि मैं "उत्पन्न जेएआर में आवश्यक पुस्तकालय निकालने" के बजाय "उत्पन्न जेएआर में पैकेज आवश्यक आवश्यक पुस्तकालय" चुन रहा था।

यह सुनिश्चित नहीं है कि अंतर क्या है, हालांकि मैंने देखा है कि मेरे कुछ JARs केवल "पैकेज आवश्यक ..." का उपयोग करते समय बनाते समय काम करते हैं, और अन्य केवल तभी काम करते हैं जब मैं उन्हें "निकालने के लिए उपयोग करता हूं .. । "।

यह सुनिश्चित नहीं है कि ऐसा क्यों है। आखिरकार, मुझे वास्तव में परवाह नहीं है, जब तक परिणामस्वरूप जेएआर की कोई बाहरी निर्भरता न हो।

बीटीडब्ल्यू, प्रस्तावित किया गया दूसरा विकल्प (जेएआर की मैनिफेस्ट फ़ाइल को संशोधित करना) मेरे लिए काम नहीं करता था। मैंने manifext निकाला (jar xf MYJAR.jar META-INF/MANIFEST.MF), Eclipse-BundleShape: dir जोड़ा, इसे जार (jar umf META-INF/MANIFEST.MF MYJAR.jar) में इंजेक्शन दिया, और सत्यापित किया कि मैनिफेस्ट बदल गया है। वही त्रुटि

0

सही परियोजना पर क्लिक करें -> गुण - पथ> जावा बिल्ड -> आदेश और निर्यात, और चुनें पुस्तकालयों

सही परियोजना पर क्लिक करें -> निर्यात करें ... -> Runnable JAR फ़ाइल -> कॉपी उत्पन्न जेएआर के बगल में एक उप-फ़ोल्डर में आवश्यक पुस्तकालयों ने यह मेरे लिए काम किया।

संबंधित मुद्दे