The following comment has been added to this issue: Author: Steve Brewin Created: Mon, 9 Aug 2004 3:31 PM Body: It is true that a URL can use %20 to escape spaces, thus a fully qualified URL such as "file:///c:/Program%20Files/whatever%20%you%20want" will work.
James' config.xml uses a relative URI to include documents so as not to bind the installed project to a specific protocol or location. The starting assumptions are: - The included documents are served using the same protocol as the config.xml, be that file:, http:, ldap: or whatever. - The 'config.xml' document can be stored anywhere in the hierarchy made accessible via the protocol. - Documents included by 'config.xml' are stored in a fixed shape hierarchy relative to 'config.xml'. The user is free to override any of these assumptions by changing the declarations in config.xml. Such changes may include anything which conforms to the URL/URI specs., including using alternative protocols for some documents, changing the shape of the subtree, or <bold>using a fully qualified URL to work around the embedded space problem</bold>. For that matter, the includes can be replaced entirely by inserting the contents of the relevant documents into the places they are referenced in 'config.xml' and removing the associated entity declarations. This is how it used to be until 'config.xml' grew so large as to be barely intelligible. The real world cost of this flexibility, based on bug reports and mailing list questions, seems to be that the default 'out of the box' configuration causes a small minority of users problems. Should we consider this a 'bug'? No, as previously noted, James and the XML parser it relies on are behaving as they should. Should we abandon this flexibility in order to circumvent the problem? No, the benefits for the many far outweigh the problems for the few. Should we ignore this problem? No. Though we are technically correct we cannot expect all users to understand the issues involved and navigate themselves to a solution based on developing a deeper understanding of URIs and URLs. What should we do to help? The run scripts could check for installation into a path with embedded spaces, warn about the problem and point to an entry in the FAQ regarding circumventions. If anyone thinks that this is the right way to go, why not make a feature request, linking it to this issue? Better, develop enhancements to the existing scripts and submit them as patches, or write the missing FAQ. Finally, unprofessional? Try searching the knowledge bases and mailing lists of the commercial J2EE server vendors, or open source solutions such as Tomcat. Their solutions for this issue vary between "install it where we told you" to "YYGT" (yes, you get that). So we are as unprofessional as the market leaders :) -- Steve --------------------------------------------------------------------- View this comment: http://issues.apache.org/jira/browse/JAMES-307?page=comments#action_37122 --------------------------------------------------------------------- View the issue: http://issues.apache.org/jira/browse/JAMES-307 Here is an overview of the issue: --------------------------------------------------------------------- Key: JAMES-307 Summary: james 2.2.0 run.bat Error building configuration Type: Bug Status: Closed Priority: Major Resolution: WON'T FIX Project: James Versions: 2.2.0 Assignee: Reporter: Michael Cook Created: Sat, 17 Jul 2004 10:50 PM Updated: Mon, 9 Aug 2004 3:31 PM Environment: Windows XP Home SP1 with JSDK version "1.4.1_02" and James 2.2.0. Description: First time thru and subsequently run.bat results in: ==================================================== Using PHOENIX_HOME: C:\Program Files\james-2.2.0 Using PHOENIX_TMPDIR: 'C:\Program Files\james-2.2.0\bin\Files\james-2.2.0\temp' Using JAVA_HOME: c:\Program Files\j2sdk1.4.1_01 Phoenix 4.0.1 There was an uncaught exception: --------------------------------------------------------- --- Message --- Error building configuration from file:/C:/Program Files/james-2.2.0/apps/james/ SAR-INF/config.xml. --- Stack Trace --- org.apache.avalon.phoenix.interfaces.DeploymentException: Error building configu ration from file:/C:/Program Files/james-2.2.0/apps/james/SAR-INF/config.xml. at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.getConf igurationFor(DefaultDeployer.java:499) at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.deploy( DefaultDeployer.java:325) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployF ile(DefaultEmbeddor.java:498) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployF ile(DefaultEmbeddor.java:491) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployF iles(DefaultEmbeddor.java:476) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployD efaultApplications(DefaultEmbeddor.java:466) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.execute (DefaultEmbeddor.java:224) at org.apache.avalon.phoenix.frontends.CLIMain.run(CLIMain.java:158) at org.apache.avalon.phoenix.frontends.CLIMain.execute(CLIMain.java:144) at org.apache.avalon.phoenix.frontends.CLIMain.main(CLIMain.java:102) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.avalon.phoenix.launcher.Main.startup(Main.java:94) at org.apache.avalon.phoenix.launcher.Main.main(Main.java:46) Caused by: java.net.MalformedURLException: no protocol: ../conf/james-fetchmail. xml at java.net.URL.<init>(URL.java:579) at java.net.URL.<init>(URL.java:476) at java.net.URL.<init>(URL.java:425) at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager. java:796) at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager. java:725) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEntityRefer ence(XMLDocumentFragmentScannerImpl.java:1073) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent Dispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1489) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XM LDocumentFragmentScannerImpl.java:333) at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.jav a:524) at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.jav a:580) at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152) at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.j ava:1169) at org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder.bu ild(ConfigurationBuilder.java:129) at org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder.bu ild(ConfigurationBuilder.java:116) at org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder.bu ild(ConfigurationBuilder.java:97) at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.getConf igurationFor(DefaultDeployer.java:493) ... 15 more rethrown from java.net.MalformedURLException: no protocol: ../conf/james-fetchmail.xml at java.net.URL.<init>(URL.java:579) at java.net.URL.<init>(URL.java:476) at java.net.URL.<init>(URL.java:425) at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager. java:796) at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager. java:725) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEntityRefer ence(XMLDocumentFragmentScannerImpl.java:1073) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent Dispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1489) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XM LDocumentFragmentScannerImpl.java:333) at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.jav a:524) at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.jav a:580) at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152) at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.j ava:1169) at org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder.bu ild(ConfigurationBuilder.java:129) at org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder.bu ild(ConfigurationBuilder.java:116) at org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder.bu ild(ConfigurationBuilder.java:97) at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.getConf igurationFor(DefaultDeployer.java:493) at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.deploy( DefaultDeployer.java:325) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployF ile(DefaultEmbeddor.java:498) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployF ile(DefaultEmbeddor.java:491) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployF iles(DefaultEmbeddor.java:476) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployD efaultApplications(DefaultEmbeddor.java:466) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.execute (DefaultEmbeddor.java:224) at org.apache.avalon.phoenix.frontends.CLIMain.run(CLIMain.java:158) at org.apache.avalon.phoenix.frontends.CLIMain.execute(CLIMain.java:144) at org.apache.avalon.phoenix.frontends.CLIMain.main(CLIMain.java:102) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.avalon.phoenix.launcher.Main.startup(Main.java:94) at org.apache.avalon.phoenix.launcher.Main.main(Main.java:46) --------------------------------------------------------- The log file may contain further details of error. Please check the configuration files and restart Phoenix. If the problem persists, contact the Avalon project. See http://jakarta.apache.org/avalon for more information. Shutting down Phoenix. Press any key to continue . . . Phoenix.log contains: ===================== INFO 2004-07-18 00:30:09.859 [Phoenix ] (): Logger started WARN 2004-07-18 00:30:09.937 [Phoenix ] (): Phoenix was not started by the daemon thus it will not be possible to restart the JVM via the Management interface. INFO 2004-07-18 00:30:10.078 [Phoenix.] (): Work directory does not exist, attempting to create directory C:\Program Files\james-2.2.0\work. INFO 2004-07-18 00:30:10.140 [Phoenix.] (): Installing Sar located at file:/C:/Program Files/james-2.2.0/apps/james.sar. ERROR 2004-07-18 00:30:10.812 [Phoenix.] (): Error building configuration from file:/C:/Program Files/james-2.2.0/apps/james/SAR-INF/config.xml. java.net.MalformedURLException: no protocol: ../conf/james-fetchmail.xml at java.net.URL.<init>(URL.java:579) at java.net.URL.<init>(URL.java:476) at java.net.URL.<init>(URL.java:425) at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.java:796) at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.java:725) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEntityReference(XMLDocumentFragmentScannerImpl.java:1073) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1489) --------------------------------------------------------------------- JIRA INFORMATION: This message is automatically generated by JIRA. If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]