2015-02-23 69 views
0

我想知道可能會導致以下異常的原因是什麼?芝麻中存在多個ID語句異常的可能原因是什麼?

org.openrdf.repository.config.RepositoryConfigException: Multiple ID-statements for repository ID test_3 

當我試圖查詢test_3存儲庫時,它會上升。另一個事實是,在此之後,有兩個存儲庫與我的網頁中顯示相同的名稱http://localhost:8080/openrdf-workbench/repositories/NONE/repositories

任何幫助,歡迎!

編輯

我用芝麻2.7.7

EDIT 2

提供關於造成異常的代碼的詳細信息

代碼

public void connectToRepository(){

RepositoryConnection connection; 

    RemoteRepositoryManager repositoryManager = new RemoteRepositoryManager("http://localhost:8080/openrdf-sesame/"); 

    try { 

     repositoryManager.initialize(); 

     SailImplConfig backendConfig = new NativeStoreConfig("spoc,sopc,posc,psoc,ospc,opsc"); 

     RepositoryImplConfig repositoryTypeSpec = new SailRepositoryConfig(backendConfig); 

     RepositoryConfig repConfig = new RepositoryConfig(repositoryID, repositoryTypeSpec); 

     repositoryManager.addRepositoryConfig(repConfig); 

     Repository myRepository = repositoryManager.getRepository(repositoryID); 

     myRepository.initialize(); 

     connection = myRepository.getConnection(); 

    } 

    catch (RepositoryException | RepositoryConfigException e) { 
     e.printStackTrace(); 
    } 
} 

例外情況是通過在下面的代碼行的原因:

repositoryManager.addRepositoryConfig(repConfig); 

下面是詳細介紹

log4j:WARN No appenders could be found for logger (org.openrdf.rio.DatatypeHandlerRegistry). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
Custom NTriples/NQuads Parser 
Custom NTriples/NQuads Parser 
org.openrdf.repository.config.RepositoryConfigException: Multiple ID-statements for repository ID 10m7_m 
at org.openrdf.repository.config.RepositoryConfigUtil.getIDStatement(RepositoryConfigUtil.java:269) 
at org.openrdf.repository.config.RepositoryConfigUtil.hasRepositoryConfig(RepositoryConfigUtil.java:91) 
at org.openrdf.repository.manager.RemoteRepositoryManager.createRepository(RemoteRepositoryManager.java:174) 
at org.openrdf.repository.manager.RepositoryManager.getRepository(RepositoryManager.java:376) 
at soctrace.repositories.OLDSesameRepositoryManagement.connectToRepository(OLDSesameRepositoryManagement.java:123) 
at soctrace.repositories.OLDSesameRepositoryManagement.queryInRepository(OLDSesameRepositoryManagement.java:150) 
at soctrace.views.Main.main(Main.java:692) 
[sesame in memory] connection to repository 10m7_m done , 444, ms 
Exception in thread "main" java.lang.NullPointerException 
at soctrace.repositories.OLDSesameRepositoryManagement.runQuery(OLDSesameRepositoryManagement.java:250) 
at soctrace.repositories.OLDSesameRepositoryManagement.queryInRepository(OLDSesameRepositoryManagement.java:155) 
at soctrace.views.Main.main(Main.java:692) 

回答

0

你的代碼創建一個新的存儲庫(通過添加新的存儲庫配置於儲存庫管理器)時間您執行connectToRepository()方法。由於您每次都使用完全相同的存儲庫配置(,包括存儲庫的實際ID),所以第二次執行時會自然導致錯誤:您嘗試添加一個存儲庫,其中存在一個已存在的ID。

你應該重寫代碼,以確保它嘗試創建存儲庫時使用該ID存儲庫尚不存在 - 如果它已經存在,它應該只使用現有的一個。

相關問題