2010-12-08 39 views
4

J'essaie de fournir une interface que je peux appeler depuis MATLAB pour accéder au contenu d'une base de données. J'ai déjà une interface Java existante qui utilise eclipselink pour se connecter à la base de données et j'aimerais la réutiliser. J'ai écrit une classe pour fournir cela et il fonctionne correctement lorsque je l'appelle directement à partir de Java, mais lorsque je tente de l'appeler de Matlab je reçois l'exception suivante:Utilisation d'eclipselink dans le code Java exécuté à partir de MATLAB

javax.persistence.PersistenceException: No Perisistence provider for EntityManager named DatabaseConnection 

En général, cette exception se produit lorsque je n'ai pas le dossier META-INF avec le persistence.xml sur le classpath correctement, mais j'ai essayé de mettre le dossier de base qui contient le dossier META-INF à la fois sur les chemins d'accès dynamiques et statiques MATLAB javaclasspaths sans succès. Encore une fois, ce code exact (y compris le fichier persistence.xml) fonctionne correctement lorsqu'il est exécuté à partir de Java. Est-ce que quelqu'un sait ce que je manque? La principale différence que j'ai pu constater à partir de ce qui se passe lorsque j'exécute le code java est que MATLAB utilise un chargeur de classe OSGI (felix) plutôt que le chargeur de classe par défaut que Java utilise, mais je n'ai pas compris quelle différence cela fait de trouver le fichier persistence.xml.

+1

Probable dup de http://stackoverflow.com/questions/4376565/java-jpa-class-for-matlab. Quelles sont les chances de deux questions Matlab/JPA/Eclipse/classpath en 24 heures? Travaillez-vous avec Reilly? (Résumé: mettez aussi l'eclipselink et les JAR de vos utilisateurs sur le chemin de classe statique.) –

+0

J'ai essayé de faire sauter le code avec lequel je travaillais (j'avais déjà pointé directement sur le dossier bin) avec le dossier META-INF à le niveau supérieur. Je mets cela comme la toute première chose sur le classpath statique (dans classpath.txt) avec un certain nombre d'autres jars dont il dépend (y compris eclipselink). Malheureusement, j'ai eu la même erreur. – Sam

Répondre