Andrew Leung - 2005-08-24

Not sure if this is a bug in HttpUnit/Rhino, or something on my part.

I have a jsp page that loads an external javascript file as follows:
<script charset="UTF-8" type="text/javascript" src="/javascript/rts.js"></script>

both the jsp and js files are saved in UTF-8 format. I am also sure the jsp has all the page, request/response encoding, etc in UTF-8 correctly too, as I have been testing this page for several weeks using IE and firefox.

Now when I try to run this thru HttpUnit, it gives a syntax error. But then i changed to have the javascript in-place instead of loading externally, and it works! i.e. by removing the src attribute in <script>, but copy&paste the whole rts.js in between the <script> and </script>.

Note: the js file contains some validation logic that involves foreign characters, which is why UTF-8.

Really appreciate if someone can help me to resolve this so that i can avoid resorting to copy&paste the whole rts.js to every jsp.

here is the complete stack trace:

SyntaxError: illegal character (httpunit; )
    at org.mozilla.javascript.NativeGlobal.constructError(NativeGlobal.java:597)
    at org.mozilla.javascript.TokenStream.reportSyntaxError(TokenStream.java:1324)
    at org.mozilla.javascript.TokenStream.getToken(TokenStream.java:1302)
    at org.mozilla.javascript.Parser.memberExprTail(Parser.java:1213)
    at org.mozilla.javascript.Parser.memberExpr(Parser.java:1204)
    at org.mozilla.javascript.Parser.unaryExpr(Parser.java:1115)
    at org.mozilla.javascript.Parser.mulExpr(Parser.java:1062)
    at org.mozilla.javascript.Parser.addExpr(Parser.java:1045)
    at org.mozilla.javascript.Parser.shiftExpr(Parser.java:1032)
    at org.mozilla.javascript.Parser.relExpr(Parser.java:1015)
    at org.mozilla.javascript.Parser.eqExpr(Parser.java:1002)
    at org.mozilla.javascript.Parser.bitAndExpr(Parser.java:991)
    at org.mozilla.javascript.Parser.bitXorExpr(Parser.java:980)
    at org.mozilla.javascript.Parser.bitOrExpr(Parser.java:969)
    at org.mozilla.javascript.Parser.andExpr(Parser.java:957)
    at org.mozilla.javascript.Parser.orExpr(Parser.java:945)
    at org.mozilla.javascript.Parser.condExpr(Parser.java:928)
    at org.mozilla.javascript.Parser.assignExpr(Parser.java:909)
    at org.mozilla.javascript.Parser.expr(Parser.java:898)
    at org.mozilla.javascript.Parser.statementHelper(Parser.java:791)
    at org.mozilla.javascript.Parser.statement(Parser.java:387)
    at org.mozilla.javascript.Parser.parse(Parser.java:128)
    at org.mozilla.javascript.Context.compile(Context.java:2053)
    at org.mozilla.javascript.Context.compile(Context.java:2006)
    at org.mozilla.javascript.Context.compileReader(Context.java:899)
    at org.mozilla.javascript.Context.evaluateReader(Context.java:817)
    at org.mozilla.javascript.Context.evaluateString(Context.java:784)
    at com.meterware.httpunit.javascript.JavaScript$JavaScriptEngine.executeScript(JavaScript.java:122)
    at com.meterware.httpunit.scripting.ScriptableDelegate.runScript(ScriptableDelegate.java:64)
    at com.meterware.httpunit.parsing.ScriptFilter.getTranslatedScript(ScriptFilter.java:150)
    at com.meterware.httpunit.parsing.ScriptFilter.endElement(ScriptFilter.java:131)
    at org.cyberneko.html.HTMLTagBalancer.callEndElement(Unknown Source)
    at org.cyberneko.html.HTMLTagBalancer.endElement(Unknown Source)
    at org.cyberneko.html.HTMLScanner$SpecialScanner.scan(Unknown Source)
    at org.cyberneko.html.HTMLScanner.scanDocument(Unknown Source)
    at org.cyberneko.html.HTMLConfiguration.parse(Unknown Source)
    at org.cyberneko.html.HTMLConfiguration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
    at com.meterware.httpunit.parsing.NekoHTMLParser.parse(NekoHTMLParser.java:41)
    at com.meterware.httpunit.HTMLPage.parse(HTMLPage.java:244)
    at com.meterware.httpunit.WebResponse.getReceivedPage(WebResponse.java:1014)
    at com.meterware.httpunit.WebResponse$Scriptable.load(WebResponse.java:611)
    at com.meterware.httpunit.javascript.JavaScript$Window.initialize(JavaScript.java:424)
    at com.meterware.httpunit.javascript.JavaScript.run(JavaScript.java:80)
    at com.meterware.httpunit.javascript.JavaScriptEngineFactory.associate(JavaScriptEngineFactory.java:46)
    at com.meterware.httpunit.RequestContext.runScripts(RequestContext.java:44)
    at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:119)
    at com.meterware.httpunit.WebClient.getResponse(WebClient.java:112)
    at net.sourceforge.jwebunit.HttpUnitDialog.<init>(HttpUnitDialog.java:48)
    at net.sourceforge.jwebunit.WebTester.beginAt(WebTester.java:55)
    at net.sourceforge.jwebunit.WebTestCase.beginAt(WebTestCase.java:46)