I installed Tomcat 8.0.12 in my MacBook OS X 10.9.5 here /Library/Tomcat/Home. Home is a symbolic link that will always point to the current version Tomcat directory, in this case /Library/Tomcat/apache-tomcat-8.0.12
In the /Library/Tomcat/Home/conf/tomcat-users.xml file I added the following: <role rolename="manager-gui"/> <user username=“admin” password="password” roles="manager-gui”/> When I start tomcat with the out of the box setup everything looks good except that is throwing an exception regarding <user *username=“admin”* password="adminpw” roles="manager-gui”/>, see below... I am not sure what is going on, this is suppose to work out of the box Using CATALINA_BASE: /Library/Tomcat/Home Using CATALINA_HOME: /Library/Tomcat/Home Using CATALINA_TMPDIR: /Library/Tomcat/Home/temp Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home Using CLASSPATH: /Library/Tomcat/Home/bin/bootstrap.jar:/Library/Tomcat/Home/bin/tomcat-juli.jar .../Home/logs/catalina.2014-10-02.log 02-Oct-2014 12:19:44.120 INFO [main] org.apache.catalina.core.AprLifecycleListener.init The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/gibranecastillo/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. 02-Oct-2014 12:19:44.551 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"] 02-Oct-2014 12:19:44.670 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read 02-Oct-2014 12:19:44.676 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"] 02-Oct-2014 12:19:44.683 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read 02-Oct-2014 12:19:44.684 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1236 ms *02-Oct-2014 12:19:44.726 SEVERE [main] org.apache.tomcat.util.digester.Digester.fatalError Parse Fatal Error at line 37 column 18: Open quote is expected for attribute "{1}" associated with an element type "username".* * org.xml.sax.SAXParseException; lineNumber: 37; columnNumber: 18; Open quote is expected for attribute "{1}" associated with an element type "username".* at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436) at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanAttributeValue(XMLScanner.java:829) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanAttribute(XMLDocumentFragmentScannerImpl.java:1546) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1318) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2770) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1476) at org.apache.catalina.users.MemoryUserDatabase.open(MemoryUserDatabase.java:430) at org.apache.catalina.users.MemoryUserDatabaseFactory.getObjectInstance(MemoryUserDatabaseFactory.java:102) at org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:94) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321) at org.apache.naming.NamingContext.lookup(NamingContext.java:841) at org.apache.naming.NamingContext.lookup(NamingContext.java:152) at org.apache.naming.NamingContextBindingsEnumeration.nextElementInternal(NamingContextBindingsEnumeration.java:117) -- Thank you, *Gibran E Castillo*