Exception ausserhalb von Eclipse

Status
Nicht offen für weitere Antworten.

Kris

Bekanntes Mitglied
Hallo

Die Daten werden mit JPA persistent gemacht. Hierzu wird kein J2EE Server genutzt. Sondern direkt auf eine MYSQL Datenbank zugegriffen. Wenn ich das Programm innerhalb von Eclipse starte, dann funktioniert es einwandfrei. Mache ich jedoch eine Runnable JAR-File draus, erhalte ich einen Fehler beim Afbau einer EntityManagerFactory.

Wenn ich beim Erstellen der Jar-File "Extract requierd libraries into generated JAR" auswähle, erhalte ich folgende Fehlermeldung.

Java:
No Persistence provider for EntityManager named local:  The following providers:
oracle.toplink.essentials.PersistenceProvider
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
Returned null to createEntityManagerFactory.

No Persistence provider for EntityManager named local:  The following providers:
oracle.toplink.essentials.PersistenceProvider
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
Returned null to createEntityManagerFactory.

Wenn ich "Extract requierd libraries into generated JAR" auswähle dann folgende.

Java:
No Persistence provider for EntityManager named local: Provider named oracle.toplink.essentials.PersistenceProvider threw unexpected exception at create EntityManagerFactory: 
oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException
Local Exception Stack: 
Exception [TOPLINK-30005] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while searching for persistence archives with ClassLoader: java.net.URLClassLoader@a90653
Internal Exception: Exception [TOPLINK-30004] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while processing persistence.xml from URL: rsrc:../
Internal Exception: java.net.MalformedURLException
	at oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:144)
	at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:168)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:110)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
	at de.drk.krefeld.control.Main.main(Main.java:38)
	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(JarRsrcLoader.java:56)
Caused by: Exception [TOPLINK-30004] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while processing persistence.xml from URL: rsrc:../
Internal Exception: java.net.MalformedURLException
	at oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException.exceptionProcessingPersistenceXML(PersistenceUnitLoadingException.java:135)
	at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.processPersistenceXML(PersistenceUnitProcessor.java:362)
	at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.processPersistenceArchive(PersistenceUnitProcessor.java:309)
	at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.getPersistenceUnits(PersistenceUnitProcessor.java:238)
	at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initPersistenceUnits(JavaSECMPInitializer.java:237)
	at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initialize(JavaSECMPInitializer.java:256)
	at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:154)
	... 8 more
Caused by: java.net.MalformedURLException
	at java.net.URL.<init>(Unknown Source)
	at java.net.URL.<init>(Unknown Source)
	at java.net.URL.<init>(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
	at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.processPersistenceXML(PersistenceUnitProcessor.java:360)
	... 13 more


Provider named oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider threw unexpected exception at create EntityManagerFactory: 
oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException
Local Exception Stack: 
Exception [TOPLINK-30005] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while searching for persistence archives with ClassLoader: java.net.URLClassLoader@a90653
Internal Exception: Exception [TOPLINK-30004] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while processing persistence.xml from URL: rsrc:../
Internal Exception: java.net.MalformedURLException
	at oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:144)
	at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:168)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:110)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
	at de.drk.krefeld.control.Main.main(Main.java:38)
	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(JarRsrcLoader.java:56)
Caused by: Exception [TOPLINK-30004] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while processing persistence.xml from URL: rsrc:../
Internal Exception: java.net.MalformedURLException
	at oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException.exceptionProcessingPersistenceXML(PersistenceUnitLoadingException.java:135)
	at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.processPersistenceXML(PersistenceUnitProcessor.java:362)
	at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.processPersistenceArchive(PersistenceUnitProcessor.java:309)
	at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.getPersistenceUnits(PersistenceUnitProcessor.java:238)
	at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initPersistenceUnits(JavaSECMPInitializer.java:237)
	at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initialize(JavaSECMPInitializer.java:256)
	at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:154)
	... 8 more
Caused by: java.net.MalformedURLException
	at java.net.URL.<init>(Unknown Source)
	at java.net.URL.<init>(Unknown Source)
	at java.net.URL.<init>(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
	at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.processPersistenceXML(PersistenceUnitProcessor.java:360)
	... 13 more


Woran ligt das?
 

Studdi23

Mitglied
Hi,

habe haargenau das gleiche Problem. Hast du eine Lösung hierfür gefunden? Sitze schon ne Weile
dran und komme nicht dahinter.
 

KSG9|sebastian

Top Contributor
Packetier das Ding vernünftig.

Erstellt eine JAR mit deiner Applikation und leg die Datei im Ordner <myapp> ab. Kopier alle benötigten JARs nach <myapp> und erstelle eine MANIFEST.MF mit den entsprechenden Classpath-Einträgen:

Code:
Manifest-Version: 1.0
Main-Class: mein.package.MeineMainKlasse
 
Class-Path: toplink..jar jpla...jar hier_alles_jars_auflisten

und pack die MANIFEST.MF in das JAR deiner Applikation nach META-INF.


Und zeig mal deine persistence.xml her. Da scheint die URL für die Datenbank falsch zu sein..
 

Studdi23

Mitglied
[EDIT]
So jetzt hat es doch noch geklappt. Scheint als gäbe es wohl doch einen Unterschied ob ich meine App als Jar oder extrahiert in die Runnable Jar packe. :) Wäre ich selber nie drauf gekommen. Vielen Dank!
[/EDIT]

Hi,

genauso wie von dir beschrieben sieht meine Ordnerstruktur und der Inhalt der MANIFEST.MF aus. Es ist doch egal ob ich meine Applikation als .jar oder extrahiert in die Runnable Jar packe, oder etwa nicht?

Hier meine persistence.xml (modifiziert):

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="App" transaction-type="RESOURCE_LOCAL">

<class>...</class>


<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/MyDatabase" />
<property name="javax.persistence.jdbc.user" value="user" />
<property name="javax.persistence.jdbc.password" value="" />

</properties>

</persistence-unit>
</persistence>
[/XML]

Und hier die MANIFEST.MF:
Code:
Manifest-Version: 1.0
Class-Path: .
Rsrc-Main-Class: de.example.MyApp
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
Rsrc-Class-Path: ./ org.eclipse.persistence.antlr_2.1.0.v20100614-r760
 8.jar org.eclipse.persistence.asm_2.1.0.v20100614-r7608.jar swinglib-0.1.jar org.eclipse.persistence.core_2.1.0.v20100614-r7608.jar or
 g.eclipse.persistence.jpa_2.1.0.v20100614-r7608.jar
 mysql-connector-java-5.1.13-bin.jar javax.persistence_2.0.1.v201006031150.jar
 annotations-api.jar

Inhalt der Jar:
Code:
de <---Meine Applikation
META-INF
          +MAINFEST.MF
          +persistence.xml
org <---JarRsrcLoader
jar1.jar
jar2.jar
...
 
Zuletzt bearbeitet:

KSG9|sebastian

Top Contributor
Tja..das macht schon einen Unterschied.

Der Class-Path wird mit den Java Bordmitteln geladen.
Bei deiner Variante wird eine eigene MainClass verwendet welche wiederum den Classpath aufbaut.

Wie und ob dieses Ding tut kann ich dir nicht sagen - zusätzlich hat deine Anwendung dann Abhänigkeiten auf Eclipse-JARs:
Code:
Rsrc-Main-Class: de.example.MyApp
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
 

JimPanse

Bekanntes Mitglied
Du hast den Port vergessen!

Richtig wäre es so:
Java:
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/MyDatabase" />

Ich hoffe das hilft dir weiter.

Greetz
 

Studdi23

Mitglied
Servus,

das Problem hatte sich erledigt, lag an dem resource class-path, trotzdem danke für die Antwort. Hab nun aber ein anderes kleines Problem. Wenn ich das Programm über die Runnable Jar ausführe dann reagiert mein JButton sehr träge, meistens erst nach drei oder vier Klicks. Wenn ich aus Eclipse heraus starte ist das nicht der Fall. Irgendjemand eine Ahnung woran das liegen könnte??
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben