2014-01-31 4 views
2

here과 같이 포함 된 방법을 사용하여 eXist XML DB에 액세스하려고합니다.eXist xml db : java.lang.NoClassDefFoundError : org/apache/ws/commons/serialSerialize/DOMSerializer

해당 페이지는 클래스 패스에 필요한 항아리의 목록을 가지고 있으며, 나는 거기에 그들 모두를 가지고 있지만,이 오류가 점점 계속 :

여기
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/ws/commons/serialize/DOMSerializer 

내가 내 클래스 경로에있는 무엇을;

****************************************************** 
reading a doc from xml db 
****************************************************** 
reading doc... 
trying to call class.forname on org.exist.xmldb.DatabaseImpl 
creating db instance 
register database 
getting collection: xmldb:exist://localhost:8080/exist/xmlrpc/db/test-journal 
Exception in thread "main" java.lang.NoClassDefFoundError:  org/apache/ws/commons/serialize/DOMSerializer 
at org.apache.xmlrpc.serializer.NodeSerializer.<clinit>(NodeSerializer.java:30) 
at org.apache.xmlrpc.common.TypeFactoryImpl.<clinit>(TypeFactoryImpl.java:88) 
at org.apache.xmlrpc.common.XmlRpcController.<init>(XmlRpcController.java:31) 
at org.apache.xmlrpc.client.XmlRpcClient.<init>(XmlRpcClient.java:51) 
at org.exist.xmldb.DatabaseImpl.getRpcClient(DatabaseImpl.java:324) 
at org.exist.xmldb.DatabaseImpl.getRemoteCollection(DatabaseImpl.java:240) 
at org.exist.xmldb.DatabaseImpl.getCollection(DatabaseImpl.java:164) 
at org.exist.xmldb.DatabaseImpl.getCollection(DatabaseImpl.java:153) 
at org.xmldb.api.DatabaseManager.getCollection(Unknown Source) 
at org.xmldb.api.DatabaseManager.getCollection(Unknown Source) 
at  com.jasonwardenburg.codetest.exist.ExistDBFileReader.readDoc(ExistDBFileReader.java:48) 
at com.jasonwardenburg.codetest.exist.ExistDBFileReader.main(ExistDBFileReader.java:27) 
Caused by: java.lang.ClassNotFoundException: org.apache.ws.commons.serialize.DOMSerializer 
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) 
... 12 more 

내가 아파치 XML에 갔다 : 오류를 포함하여 여기

 System.out.println("trying to call class.forname on " + DRIVER); 
     Class cl = Class.forName(DRIVER); 

     System.out.println("creating db instance"); 
     Database database = (Database) cl.newInstance(); 
     database.setProperty("create-database", "true"); 

     System.out.println("register database"); 
     DatabaseManager.registerDatabase(database); 

     System.out.println("getting collection: " + URI + collectionName); 
     Collection collection = DatabaseManager.getCollection(URI + collectionName); 
     //collection.setProperty(OutputKeys.INDENT, "yes"); 

     //System.out.println("getting resource"); 
     //XMLResource xmlRes = (XMLResource)collection.getResource(resourceName); 

및 콘솔 출력입니다 : 여기

antlr-2.7.7.jar 
commons-collections-3.2.1.jar 
commons-logging-1.1.1.jar 
commons-pool-1.6.jar 
exist-modules.jar 
exist-optional.jar 
exist.jar 
jta-1.1.jar 
log4j-1.2.17.jar 
pkg-repo.jar 
quartz-2.1.6.jar 
slf4j-api-1.7.2.jar 
slf4j-log4j12-1.7.2.jar 
sunxacml-1.2.jar 
xmldb.jar 
xmlrpc-client-3.1.3.jar 
xmlrpc-common-3.1.3.jar 
xmlrpc-server-3.1.3.jar 
saxonhe-9.4.0.7.jar 
serializer-2.7.1.jar 
xalan-2.7.1.jar 
xercesImpl-2.11.0.jar 
xml-apis-1.4.01.jar 
xml-resolver-1.2.jar 

는 관련 코드 : I 이클립스를 사용하고 있습니다 rpc 페이지가 있지만 대부분의 미러 사이트가 작동하지 않습니다 ... 누구든지이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 덕분에 !

답변

9

$ EXIST_HOME/lib/core에서 ws-commons-util-1.0.2.jar가 누락되었습니다.

문서가 오래되었다고 생각합니다. 적어도 $ EXIST_HOME/lib/core에있는 모든 라이브러리를 포함했는지 확인해야합니다.

3

dependencies tree for xmlrpc에 따르면 런타임 의존성 중 하나 인 ws-commons-util.jar가 누락되었습니다. 사용자가 maven을 사용하지 않는 경우 중앙 저장소에서 jar 파일을 다운로드 할 수 있습니다. here 그것을 당신의 classpath에 포함 시키십시오. 반면에주의하십시오! existDB 문서는 Xerces, Xalan 및 Saxon을 승인 된 라이브러리로 포함하지 않으면 일부 기능이 작동하지 않을 수도 있다는 사실에 대해 매우 구체적입니다. Java 릴리스의 버전이 잘못 되었기 때문입니다. 행운을 빕니다.