Java: le Retour de XMLType Données de StoredProcedure, l'Utilisation de ojdbc6.jar xdb6.jar xmlparserv2.jar pour Java pour PLSQL interaction
Je suis en suivant le tutoriel ci-dessous pour récupérer XMLType des données à partir d'une procédure stockée
http://docs.oracle.com/cd/B19306_01/appdev.102/b14259/xdb11jav.htm#g1039140
Exemple 13-4 XMLType Java: Le Retour De XMLType Données
Lorsque j'exécute le code, j'obtiens ce erreur,
Exception in thread "main" java.lang.NoClassDefFoundError: oracle/xml/parser/v2/XMLParseException
at oracle.xdb.XMLTypeFactory.create(XMLTypeFactory.java:67)
at oracle.sql.OPAQUE.toClass(OPAQUE.java:328)
at oracle.sql.OPAQUE.toJdbc(OPAQUE.java:278)
at oracle.sql.OPAQUE.toJdbc(OPAQUE.java:259)
at oracle.jdbc.driver.NamedTypeAccessor.getObject(NamedTypeAccessor.java:190)
at oracle.jdbc.driver.NamedTypeAccessor.getObject(NamedTypeAccessor.java:117)
at oracle.jdbc.driver.OracleCallableStatement.getObject(OracleCallableStatement.java:1579)
at oracle.jdbc.driver.OracleCallableStatementWrapper.getObject(OracleCallableStatementWrapper.java:815)
at com.example.TestXMLDAO.main(TestXMLDAO.java:48)
Caused by: java.lang.ClassNotFoundException: oracle.xml.parser.v2.XMLParseException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 9 more
Java extrait de code:
import java.io.IOException;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import oracle.jdbc.OracleTypes;
import oracle.xdb.XMLType;
.............
//Prepare to call the stored procedure get_group_details.
String sql = "{call mypackage.get_records(?,?,?,?,?,?,?,?)}";
callableStatement = conn.prepareCall(sql);
callableStatement.setString(1, "");
callableStatement.setString(2, "");
callableStatement.setString(3, "");
callableStatement.setString(4, "");
callableStatement.setString(5, "abb%");
callableStatement.setString(6, "F");
callableStatement.setString(7, "F");
callableStatement.registerOutParameter(8, OracleTypes.OPAQUE,
"SYS.XMLTYPE");
//execute get_group_details
//callableStatement.executeQuery();
callableStatement.executeQuery();
callableStatement.getObject(8);
//get cursor and cast it to ResultSet
xml = (XMLType) callableStatement.getObject(8);
System.out.println(xml.getStringVal());
} catch (Exception ex) {
ex.printStackTrace();
} finally {
//Close the statement
callableStatement.close();
//Close the connection
conn.close();
}
PLSQL Procédure extrait de
PROCEDURE get_records
(
grp1 IN a.name%TYPE DEFAULT NULL
,grp2 IN a.name%TYPE DEFAULT NULL
,grp3 IN a.name%TYPE DEFAULT NULL
,grp4 IN a.name%TYPE DEFAULT NULL
,grp5 IN a.name%TYPE DEFAULT NULL
,flag1 IN a.flag%TYPE DEFAULT 'F'
,flag2 IN a.flag%TYPE DEFAULT 'F'
,xml_type_out OUT xmltype
);
Pots inclus: ojdbc6.jar, xdb.jar
Aucune idée de ce que je suis absent?
Ce problème est résolu. Mais lorsqu'il est déployé dans le serveur JBoss, une autre question - veuillez voir ici si vous avez des idées - Xmlparserv2 erreur lors de l'application déployée dans jboss, de l'Installation d'Oracle ojdbc module dans JBoss pour les applications web Java
OriginalL'auteur spiderman | 2014-08-08
Vous devez vous connecter pour publier un commentaire.
Problème résolu par ajouter les pots de
Besoin de trois pots dans le classpath, [j'ai eu ces jarres encore, j'ai été faire d'erreur en raison de mauvaises versions du pot]
ojdbc6.jar, xdb6.jar, xmlparserv2-11.1.1.jar
Même si vous avez un de ces pots, vous pouvez obtenir message d'erreur tel que je prenais quand j'étais y compris une version incorrecte de xmlparserv2.jar.
Donc Important de prendre soins de la version et de la compatibilité de ces jarres.
Ceux qui ont travaillé pour moi [Mon Oracle DB version : 11.2.0.4.0]
ojdbc6.jar; xdb6.jar:
http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html
xmlparserv2-11.1.1.jar
disponible ici: ( SQL Developer ) (en sqldeveloper\modules\oracle.xdk_12.1.2)
[supprimé tiers lien de référence, comme conseillé par @Lukas Eder, Merci pour cette]
J'ai essayé une fois avec un xmlparserv2.jar obtenu à partir de SQL Developer, mais cela ne m'aide pas. peut être dû à la version. Cependant, comme vous l'avez dit, oui besoin de suivre ce que vous avez dit. Lemme essayer avec le lien que vous avez partagé en réponse
Ce marquage comme réponse que c'est la complète.
OriginalL'auteur spiderman
Il y a une distribution de
xmlparserv2.jar
dans divers produits Oracle, parmi lesquels SQL Developer (en sqldeveloper\modules\oracle.xdk_12.1.2).Bien sûr, je n'ai aucune idée si vous êtes autorisé à extraire pot de SQL Developer, licence sage.
Hésitez pas à intégrer le lien dans votre réponse. Je l'ai trouvé assez complet, sinon...
Merci Lukas Eder
OriginalL'auteur Lukas Eder
Classe
est dans xmlparserv2.jar
Disponible à http://www.oracle.com/us/downloads/index.html
Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jdbc/oci8/OCIDBAccess
. laissez-moi essayer de maven pour trouver les dépendancesC'est une bonne idée.
Ce n'était pas une bonne idée:( comme ces pots ne sont pas disponibles au public des pensions, nous avons pour télécharger les pots, les installer dans les locaux de pensions et de renvoyer dans pom.xml Donc ne vous aide pas
Et bien... C'est un terrible gâchis, tout le monde jeter des bibliothèques autour de...
une autre exception lorsque l'application est déployée sur le serveur JBoss - j'ai créé un thread pour cette stackoverflow.com/questions/26370270/...
OriginalL'auteur laune