2017-06-27 87 views
1

我想在Eclipse的Maven項目中使用ArangoDB的Java驅動程序。我正在嘗試遵循教程中關於ArangoDB的驅動程序here,但我甚至無法讓簡單的應用程序工作,甚至從一個乾淨的項目開始。「未授權執行此請求」使用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> 

運行的代碼時,我收到以下錯誤:

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) 

我試過其他的基本操作,都沒有工作(即使是簡單的arangoDB.getVersion();)。


如果我添加以下依賴於pom.xml中,它消除了警告,但沒有錯誤:

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

結果:

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

在我的理解任何連接數據,接收'響應:401'表示該憑證提供的(或不)是不夠的執行查詢目標數據庫。 – Tome

回答

1

你需要指定連接數據你的數據庫像用戶,密碼等,所有的數據庫都需要成功連接,再次檢查類 Builder的javadoc並設置用戶名和密碼。

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

在這裏,你什麼都不設置和建立ArrangoDb實例,而在所有

+0

所以,我實際上遵循了[本教程](https://www.arangodb.com/tutorials/tutorial-sync-java-driver/),其中沒有給出用戶名。 – Guiux

+0

我通過設置用戶部分解決了這個問題:'ArangoDB arangoDB = new ArangoDB.Builder()。user(「root」)。build();'。 現在,創建,數據庫,集合和文檔的操作可以正常工作,但試圖讀取現有文檔會產生NullPointerException。 – Guiux

+0

我剛剛提到的教程中出現此錯誤,或者嘗試使用以前在編譯Java驅動程序時曾工作過的代碼,但由於我嘗試使用Maven,因此不再使用該代碼。 – Guiux

相關問題