2017-06-27 1 views
1

Je souhaite utiliser le pilote java pour ArangoDB dans un projet Maven sur Eclipse. J'essaie de suivre le tutoriel pour le pilote Java pour ArangoDB disponible here, mais je ne peux même pas faire fonctionner l'application plus simple, même à partir d'un projet propre."non autorisé à exécuter cette requête" à l'aide du pilote arangodb java

main.java:

package test; 

import com.arangodb.ArangoDB; 

public class main { 

    public static void main(String[] args) { 

     ArangoDB arangoDB = new ArangoDB.Builder().build(); 

     arangoDB.createDatabase("myDatabase"); 
    } 

} 

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>test</groupId> 
    <artifactId>test</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <dependencies> 
    <dependency> 
     <groupId>com.arangodb</groupId> 
     <artifactId>arangodb-java-driver</artifactId> 
     <version>4.2.0</version> 
    </dependency> 
    </dependencies> 
</project> 

Je reçois l'erreur suivante lors de l'exécution du code:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
Exception in thread "main" com.arangodb.ArangoDBException: Response: 401, Error: 11 - not authorized to execute this request 
    at com.arangodb.internal.velocystream.VstCommunication.checkError(VstCommunication.java:106) 
    at com.arangodb.internal.velocystream.VstCommunicationSync.execute(VstCommunicationSync.java:134) 
    at com.arangodb.internal.velocystream.VstCommunicationSync.execute(VstCommunicationSync.java:46) 
    at com.arangodb.internal.velocystream.VstCommunication.execute(VstCommunication.java:96) 
    at com.arangodb.internal.velocystream.VstProtocol.execute(VstProtocol.java:46) 
    at com.arangodb.internal.ArangoExecutorSync.execute(ArangoExecutorSync.java:58) 
    at com.arangodb.ArangoDB.createDatabase(ArangoDB.java:437) 
    at test.main.main(main.java:12) 

J'ai essayé d'autres opérations de base, aucune ne fonctionne (même un simple arangoDB.getVersion();).


Si j'ajoute la dépendance suivante au pom.xml, il supprime les avertissements mais pas les erreurs:

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-simple</artifactId> 
    <version>1.7.22</version> 
</dependency> 

Résultat:

Exception in thread "main" com.arangodb.ArangoDBException: Response: 401, Error: 11 - not authorized to execute this request 
    at com.arangodb.internal.velocystream.VstCommunication.checkError(VstCommunication.java:106) 
    at com.arangodb.internal.velocystream.VstCommunicationSync.execute(VstCommunicationSync.java:134) 
    at com.arangodb.internal.velocystream.VstCommunicationSync.execute(VstCommunicationSync.java:46) 
    at com.arangodb.internal.velocystream.VstCommunication.execute(VstCommunication.java:96) 
    at com.arangodb.internal.velocystream.VstProtocol.execute(VstProtocol.java:46) 
    at com.arangodb.internal.ArangoExecutorSync.execute(ArangoExecutorSync.java:58) 
    at com.arangodb.ArangoDB.createDatabase(ArangoDB.java:437) 
    at test.main.main(main.java:12) 
+0

Dans ma compréhension, la réception d'un 'Réponse: 401' indique que les informations d'identification fournies (ou non) ne suffisent pas à effectuer la requête sur la base de données cible. – Tome

Répondre

1

Vous devez spécifier les données de connexion à votre db comme utilisateur, mot de passe et etc, tout ce qui est db besoin de connexion avec succès, vérifiez à nouveau javadoc de classe Builder et définir l'utilisateur et mot de passe.

ArangoDB arangoDB = new ArangoDB.Builder().build(); 

Ici vous rien installer et construire ArrangoDb instance sans aucune donnée de connexion à tous

+0

Donc, j'ai effectivement suivi [ce tutoriel] (https://www.arangodb.com/tutorials/tutorial-sync-java-driver/) dans lequel aucun nom d'utilisateur n'est donné. – Guiux

+0

J'ai partiellement résolu le problème en définissant l'utilisateur: 'ArangoDB arangoDB = nouveau ArangoDB.Builder(). User (" root "). Build();'. Maintenant, les opérations de création, bases de données, collections et documents fonctionnent, mais tenter de lire un document existant génère une exception NullPointerException. – Guiux

+0

Je reçois cette erreur en suivant le tutoriel que je viens de mentionner, ou en essayant d'utiliser du code qui a déjà fonctionné lorsque j'ai compilé le pilote Java moi-même, mais pas plus depuis que j'ai essayé d'utiliser Maven. – Guiux