I have been trying to deploy the Mirror API quickstart project for Java that Google provides onto Google App Engine using Maven.
I downloaded the code from github(https://github.com/googleglass/mirror-quickstart-java) and changed the client ID and secret in the oauth.properties file.
I succeeded in making it work on localhost, by simple command
mvn jetty:run
However, I am now having problems deploying it on Google App Engine.
I added appengine-web.xml in src\main\webapp\WEB-INF\ with the following content
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>mirror-api-java-test1</application>
<version>1</version>
<threadsafe>true</threadsafe>
</appengine-web-app>
Then, I made a war file with the command
mvn war:war
and tried to deploy with the follwing command
appcfg.cmd update \target\glass-java-starter-0.1-SNAPSHOT
I get the following errors when I try it.
C:\Users\MCS\Desktop\mirror-quickstart-java-master>appcfg.cmd update target\glass-java-starter-0.1-SNAPSHOT
Reading application configuration data...
5월 14, 2014 6:10:56 오후 com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
정보: Successfully processed target/glass-java-starter-0.1-SNAPSHOT\WEB-INF/appengine-web.xml
5월 14, 2014 6:10:56 오후 com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
정보: Successfully processed target/glass-java-starter-0.1-SNAPSHOT\WEB-INF/web.xml
Beginning interaction for module default...
Email: mcs8779@gmail.com
Password for mcs8779@gmail.com:
0% Created staging directory at: 'C:\Users\MCS\AppData\Local\Temp\appcfg9012404692012972997.tmp'
5% Scanning for jsp files.
8% Compiling jsp files.
5월 14, 2014 6:11:12 오후 com.google.apphosting.utils.config.AbstractConfigXmlReader getTopLevelNode
심각: Received IOException parsing the input stream for C:\Users\MCS\AppData\Local\Temp\appcfg9012404692012972997.tmp\WEB-INF/web.xml
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: invalid byte 3 of 3-byte utf-8 sequence.
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:687)
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:435)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1753)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanLiteral(XMLEntityScanner.java:1074)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanAttributeValue(XMLScanner.java:996)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanAttribute(XMLNSDocumentScannerImpl.java:438)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:254)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:604)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3122)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:880)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
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:649)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:333)
at org.mortbay.xml.XmlParser.parse(XmlParser.java:230)
at com.google.apphosting.utils.config.AbstractConfigXmlReader.getTopLevelNode(AbstractConfigXmlReader.java:207)
at com.google.apphosting.utils.config.AbstractConfigXmlReader.parse(AbstractConfigXmlReader.java:229)
at com.google.apphosting.utils.config.WebXmlReader.processXml(WebXmlReader.java:160)
at com.google.apphosting.utils.config.WebXmlReader.processXml(WebXmlReader.java:20)
at com.google.apphosting.utils.config.AbstractConfigXmlReader.readConfigXml(AbstractConfigXmlReader.java:112)
at com.google.apphosting.utils.config.WebXmlReader.readWebXml(WebXmlReader.java:87)
at com.google.appengine.tools.admin.Application.compileJsps(Application.java:804)
at com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:615)
at com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:471)
at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:55)
at com.google.appengine.tools.admin.AppCfg$UpdateAction.execute(AppCfg.java:1347)
at com.google.appengine.tools.admin.AppCfg.executeAction(AppCfg.java:332)
at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:213)
at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:124)
at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:120)
5월 14, 2014 6:11:12 오후 com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
심각: Received exception processing C:\Users\MCS\AppData\Local\Temp\appcfg9012404692012972997.tmp\WEB-INF/web.xml
com.google.apphosting.utils.config.AppEngineConfigException: Received IOException parsing the input stream for C:\Users\MCS\AppData\Local\Temp\appcfg9012404692012972997.tmpWEBINF/web.xml
at com.google.apphosting.utils.config.AbstractConfigXmlReader.getTopLevelNode(AbstractConfigXmlReader.java:211)
at com.google.apphosting.utils.config.AbstractConfigXmlReader.parse(AbstractConfigXmlReader.java:229)
at com.google.apphosting.utils.config.WebXmlReader.processXml(WebXmlReader.java:160)
at com.google.apphosting.utils.config.WebXmlReader.processXml(WebXmlReader.java:20)
at com.google.apphosting.utils.config.AbstractConfigXmlReader.readConfigXml(AbstractConfigXmlReader.java:112)
at com.google.apphosting.utils.config.WebXmlReader.readWebXml(WebXmlReader.java:87)
at com.google.appengine.tools.admin.Application.compileJsps(Application.java:804)
at com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:615)
at com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:471)
at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:55)
at com.google.appengine.tools.admin.AppCfg$UpdateAction.execute(AppCfg.java:1347)
at com.google.appengine.tools.admin.AppCfg.executeAction(AppCfg.java:332)
at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:213)
at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:124)
at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:120)
Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: invalid byte 3 of 3-byte utf-8 sequence.
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:687)
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:435)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1753)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanLiteral(XMLEntityScanner.java:1074)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanAttributeValue(XMLScanner.java:996)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanAttribute(XMLNSDocumentScannerImpl.java:438)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:254)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:604)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3122)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:880)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
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:649)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:333)
at org.mortbay.xml.XmlParser.parse(XmlParser.java:230)
at com.google.apphosting.utils.config.AbstractConfigXmlReader.getTopLevelNode(AbstractConfigXmlReader.java:207)
... 14 more
Error Details:
5월 14, 2014 6:11:11 오후 org.apache.jasper.JspC processFile
정보: Built File: \index.jsp
com.google.apphosting.utils.config.AppEngineConfigException: Received IOException parsing the input stream for C:\Users\MCS\AppData\Local\Temp\appcfg9012404692012972997.tmp\WEB-INF/web.xml
Unable to update app: Received IOException parsing the input stream for C:\Users\MCS\AppData\Local\Temp\appcfg9012404692012972997.tmp\WEB-INF/web.xml
Please see the logs [C:\Users\MCS\AppData\Local\Temp\appcfg1078372849724416694.log] for further information.
Please help me out!
(I use Korean version of Windows, so some characters may look weird in the error log)