2010-05-26 8 views
2

Tout en exécutant le code suivant:MalformedURLException avec le fichier URI

 doc = builder.parse(file); 

doc est une instance de org.w3c.dom.Document et builder est une instance de javax.xml.parsers.DocumentBuilder, je reçois l'exception suivante:

Exception in thread "main" java.net.MalformedURLException: unknown protocol: c 
     at java.net.URL.<init>(Unknown Source) 
     at java.net.URL.<init>(Unknown Source) 
     at java.net.URL.<init>(Unknown Source) 
     at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) 
     at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(Unknown Source) 
     at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(Unknown Source) 
     at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(Unknown Source) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(Unknown Source) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(Unknown Source) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
     at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) 
     at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) 
     at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
     at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) 
     at com.acme.ItemToThetaValues.createFiles(ItemToThetaValues.java:47) 

Il s'étouffe sur cette ligne du fichier:

<!DOCTYPE questestinterop SYSTEM "C:\Program Files\Acme\parsers\acme_full.dtd"> 

Je ne reçois pas cette erreur sur ma machine, alors qu'un utilisateur l'obtient sur sa machine. Nous utilisons tous les deux la version 6 de Sun JRE. Cette erreur se produit également lorsqu'il utilise deux barres obliques inverses dans le chemin au lieu de barres obliques inverses simples et lorsqu'il utilise des barres obliques au lieu de barres obliques inverses.

Tout d'abord, le code XML est-il correct? Le chemin est-il exprimé correctement? Deuxièmement, pourquoi cette erreur se produit-elle sur un ordinateur mais pas sur un autre?

Répondre

1

Il s'avère que nous n'utilisions pas les mêmes versions de JRE. Il utilisait 1.6.0_06, alors que j'utilisais la version java "1.6.0_20".

Ceci est un bug in the 1.6.0_06 version of the JRE.

Questions connexes