Error processing request

Parameters

CONTENT_LENGTH0
REQUEST_METHODGET
REQUEST_URI/revision/JTcl?V=36
QUERY_STRINGV=36
CONTENT_TYPE
DOCUMENT_URI/revision/JTcl
DOCUMENT_ROOT/var/www/nikit/nikit/nginx/../docroot
SCGI1
SERVER_PROTOCOLHTTP/1.1
HTTPSon
REMOTE_ADDR172.71.194.161
REMOTE_PORT14284
SERVER_PORT4443
SERVER_NAMEwiki.tcl-lang.org
HTTP_HOSTwiki.tcl-lang.org
HTTP_CONNECTIONKeep-Alive
HTTP_ACCEPT_ENCODINGgzip, br
HTTP_X_FORWARDED_FOR54.226.68.181
HTTP_CF_RAY86c05ad37d6f05d8-IAD
HTTP_X_FORWARDED_PROTOhttps
HTTP_CF_VISITOR{"scheme":"https"}
HTTP_ACCEPT*/*
HTTP_USER_AGENTclaudebot
HTTP_CF_CONNECTING_IP54.226.68.181
HTTP_CDN_LOOPcloudflare
HTTP_CF_IPCOUNTRYUS

Body


Error

Unknow state transition: LINE -> END

-code

1

-level

0

-errorstack

INNER {returnImm {Unknow state transition: LINE -> END} {}} CALL {my render_wikit JTcl |\ What\ |\ '''JTcl'''\ |\n|\ Where\ |\ ftp://ftp.gaertner.de/pub/j/jtcl-1.0.tar.gz\ |\n|\ Where\ |\ https://kenai.com/projects/jtcl/downloads\ |\n|\ Description\ |\ \[Java\]\ script\ library\ allowing\ access\ to\ the\ \[Tcl\]\ language.\ Can\ invoke\ Tcl\ extensions\ such\ as\ \[Tk\],\ allowing\ Java\ programmers\ to\ create\ GUI\ interfaces\ for\ Java\ applications.\ |\n|\ Updated\ |\ 07/2013\ |\n|\ Version\ |\ 2.5.0\ |\n|\ Contact\ |\ mailto:\ [email protected]\ |\n===\n----\n\n\[JTcl\ Interpreter\]\ is\ an\ implementation\ of\ Tcl\ (Tool\ Command\ Language)\ written\ in\ Java\ that\ implements\ a\ large\ extent\ of\ Tcl\ 8.4\ syntax\ and\ commands,\ limited\ only\ by\ API\ restrictions\ of\ the\ Java\ Virtual\ Machine.\ It\ is\ based\ on\ the\ Jacl\ interpreter\ from\ the\ TclJava\ project.\n\n----\n\n\[JTcl\ port\ for\ Android\]\n\n\n----\n\[mh2\]\ Is\ it\ still\ true\ for\ JTcl\ (NOT\ tclBlend\ !!)\ that\ \"tcl\ interp\ should\ have\ exactly\ one\ thread\"\n(that\ is\ exactly\ one\ thread\ can\ call\ \"eval\"\ method\ of\ a\ single\ tcl\ interp)\ \n???\n\n\[TP\]\ Yes.\ \ However,\ if\ you\ are\ looking\ for\ ways\ to\ have\ concurrency\ in\ your\ JTcl\ programs,\ check\ out\ the\ \n'''fleet'''\ package,\ written\ by\ JTcl\ maintainer\ Bruce\ Johnson.\ \ http://jtcl-project.github.io/jtcl/docs/jtcllib/fleet.html\nFleet\ creates\ a\ new\ interpreter\ and\ thread\ for\ each\ fleet\ member,\ and\ you\ communicate\ with\ those\ interp\ via\ messages.\n\n\[mh2\]\ Thanks.\ In\ fact\ I\ was\ trying\ to\ embed\ JTcl\ in\ \"vaadin\"\ (RIA\ web\ framework).\nI\ didnt\ know\ if\ java\ listeners\ can\ eval\ tcl\ code\ directly,\ \nnow\ for\ each\ JTcl\ interp\ I\ have\ a\ thread\ with\ event\ loop,\nand\ java\ listeners\ sends\ events\ with\ tcl\ code\ to\ that\ loop.\nBy\ the\ way:\ I\ know\ about\ great\ Aejaks\ software\ using\ Echo2,\nbut\ it\ seems\ to\ me\ that\ vaadin\ has\ some\ advantages\ over\ echo2:\non\ android\ browsers\ vaadin\ works\ better\ than\ echo2,\nalso\ vaadin\ seems\ to\ be\ more\ extendable\ (by\ GWT).\n\n\[TP\]\ The\ way\ to\ handle\ accessing\ the\ JTcl\ interp\ from\ multiple\ threads\ is\ via\ the\ event\ mechanism.\ \ Aejaks\ does\ this\ in\ several\ places,\nso\ it\ might\ serve\ as\ a\ guide.\ \ If\ I\ were\ doing\ Aejaks\ over\ again\ today,\ I\ would\ certainly\ use\ Vaadin\ instead\ of\ Echo2/3.\ \ Feel\ free\ to\ contact\ me\nvia\ email\ or\ Tcl'ers\ chat.\n\n----\n<<discussion>>\n\[MHo\]\ 2013-03-01:\ The\ tool\ '''paraffin.tcl'''\ doesn't\ work\ for\ me\ (Windows\ XP\ platform).\ The\ command\n======\nset\ jtclJar\ \[ziplib::getClassLocation\ \[java::getinterp\]\]\n======\ngives\ an\ unusable\ filename\ on\ windows,\ with\ a\ leading\ slash\ '/'.\ But\ even\ working\ around\ this,\ somethings\ going\ wrong\ (did\ not\ have\ the\ time\ to\ look\ further\ yet):\n======none\nc:\\Programme\\jtcl-2.4.0>jtcl\ paraffin.tcl\ iskvprep6\ ./iskvprep6\ iskvprep6.bat\ .\ncould\ not\ open\ file\ \".\\echopath\":\ file\ is\ not\ a\ zip\ file\n\ \ \ \ while\ executing\n\"error\ \"could\ not\ open\ file\ \\\"\$fileName\\\":\ file\ is\ not\ a\ zip\ file\"\"\n\ \ \ \ (\"if\"\ then\ script\ line\ 2)\n\ \ \ \ invoked\ from\ within\n\"if\ \{\[java::isnull\ \$ent\]\}\ \{\n\ \ \ \ \ \ \ \ error\ \"could\ not\ open\ file\ \\\"\$fileName\\\":\ file\ is\ not\ a\ zip\ file\"\n\ \ \ \ \}\"\n\ \ \ \ (procedure\ \"ziplib::openInputZip\"\ line\ 16)\n\ \ \ \ invoked\ from\ within\n\"ziplib::openInputZip\ \$jar\"\n\ \ \ \ invoked\ from\ within\n\"set\ jarin\ \[ziplib::openInputZip\ \$jar\]\"\n\ \ \ \ (\"foreach\"\ body\ line\ 5)\n\ \ \ \ invoked\ from\ within\n\"foreach\ jar\ \$jars\ \{\n\ \ \ \ \ \ \ \ if\ \{!\ \[file\ isfile\ \$jar\]\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ continue\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ set\ jarin\ \[ziplib::openInputZip\ \$jar\]\n\ \ \ \ \ \ \ \ ziplib::c...\"\n\ \ \ \ (procedure\ \"mkJar\"\ line\ 22)\n\ \ \ \ invoked\ from\ within\n\"mkJar\ \$app\ \$srcdir\ \$start\ \$libdir\"\n\ \ \ \ (procedure\ \"cmdLine\"\ line\ 32)\n\ \ \ \ invoked\ from\ within\n\"cmdLine\"\n\ \ \ \ (file\ \"paraffin.tcl\"\ line\ 79)\n======\n\n\[TP\]\ Could\ you\ file\ a\ bug\ report\ at\ http://kenai.com/bugzilla/buglist.cgi?product=jtcl\ \ ?\ \ Please\ include\ Java\ version,\ and\ the\ pathname\ of\ your\ Java\ installation.\n\[MHo\]:\ No,\ I\ don't,\ because\ doing\ this\ requires\ a\ login/registration.\ The\ JRE\ used\ was\ 1.6.0_41.\ But\ the\ fix\ could\ be\ as\ simple\ as\ this\ e.g.:\n======\n\ \ \ \ #\ fix-start\n\ \ \ \ if\ \{\[string\ match\ -nocase\ windows*\ \$::tcl_platform(os)\]\}\ \{\n\ \ \ \ \ \ \ set\ jtclJar\ \[string\ trimleft\ \$jtclJar\ /\]\n\ \ \ \ \}\n\ \ \ \ #\ fix-end\n======\n\n\[TP\]\ '''What\ is\ the\ pathname\ of\ your\ Java\ install'''?\ \ Please\ attach\ the\ output\ of\ \"parray\ env\"\ from\ the\ JTcl\ interactive\ shell.\ \ By\ the\ way,\ http://mailinator.com\ is\ useful\ for\ one-time\ email\ addresses\ :-)\n======\n%\ parray\ env\nenv(CLASSPATH)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\jtcl-2.4.0\\\\jtcl-2.4.0.jar\;.\;C:\\Programme\\Java\\jre1.6.0_07\\lib\\ext\\QTJ\nava.zip\nenv(HOME)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ D:\\Home\\Hoffmann\nenv(USER)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ HOFFMANN\nenv(awt.toolkit)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ sun.awt.windows.WToolkit\nenv(file.encoding)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ Cp1252\nenv(file.encoding.pkg)\ \ \ \ \ \ \ \ \ \ \ \ \ =\ sun.io\nenv(file.separator)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ \\\nenv(java.awt.graphicsenv)\ \ \ \ \ \ \ \ \ \ =\ sun.awt.Win32GraphicsEnvironment\nenv(java.awt.printerjob)\ \ \ \ \ \ \ \ \ \ \ =\ sun.awt.windows.WPrinterJob\nenv(java.class.path)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\jtcl-2.4.0\\\\jtcl-2.4.0.jar\;.\;C:\\Programme\\Java\\jre1.6.0_07\\lib\\ext\\QTJ\nava.zip\nenv(java.class.version)\ \ \ \ \ \ \ \ \ \ \ \ =\ 50.0\nenv(java.endorsed.dirs)\ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\Java\\jre6\\lib\\endorsed\nenv(java.ext.dirs)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\Java\\jre6\\lib\\ext\;C:\\WINDOWS\\Sun\\Java\\lib\\ext\nenv(java.home)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\Java\\jre6\nenv(java.io.tmpdir)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ d:\\var\\temp\\\nenv(java.library.path)\ \ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\WINDOWS\\system32\;C:\\WINDOWS\\Sun\\Java\\bin\;C:\\WINDOWS\\system32\;C:\\WINDOWS\;C:\\Progr\namme\\Tcl\\bin\;C:\\Programme\\ActiveState\ Komodo\ Edit\ 7\\\;C:\\Programme\\caesar\\OraClientNet\\bin\;C:\\Programme\\caesar\\OraClientN\net\\\;C:\\Programme\\Python27\\\;C:\\Programme\\Python27\\Scripts\;C:\\WINDOWS\\system32\;C:\\WINDOWS\;C:\\WINDOWS\\system32\\WBEM\;c:\\Prog\nramme\\misctool\;d:\\home\\Hoffmann\\pgm\\tcl\\usr\\bin\;c:\\Programme\\sysinternals2\;C:\\Programme\\ResKits\\Tools\\\;C:\\Programme\\Supp\nort\ Tools\\\;C:\\Programme\\Pbx\;C:\\Programme\\Perl\\site\\bin\;C:\\Programme\\Perl\\bin\;c:\\Programme\\Regina\;C:\\Programme\\Lua\\5.1\;C:\n\\Programme\\Lua\\5.1\\clibs\;C:\\Programme\\coreutils\;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\;C:\\Programme\\ooRexx\;C:\\Progra\nmme\\Subversion\\bin\;C:\\Programme\\Gemeinsame\ Dateien\\Acronis\\SnapAPI\\\;C:\\Programme\\Citrix\\System32\\\;C:\\WINDOWS\\system32\\Wi\nndowsPowerShell\\v1.0\;C:\\Programme\\Citrix\\System32\\\;%APPDATA%\\Python\\Scripts\;c:\\programme\\unix2\;C:\\programme\\texlive\\2011\n\\bin\\win32\;c:\\programme\\mingw\\bin\;c:\\Programme\\MinGW\\msys\\1.0\\bin\;\;.\nenv(java.runtime.name)\ \ \ \ \ \ \ \ \ \ \ \ \ =\ Java(TM)\ SE\ Runtime\ Environment\nenv(java.runtime.version)\ \ \ \ \ \ \ \ \ \ =\ 1.6.0_41-b02\nenv(java.specification.name)\ \ \ \ \ \ \ =\ Java\ Platform\ API\ Specification\nenv(java.specification.vendor)\ \ \ \ \ =\ Sun\ Microsystems\ Inc.\nenv(java.specification.version)\ \ \ \ =\ 1.6\nenv(java.vendor)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ Sun\ Microsystems\ Inc.\nenv(java.vendor.url)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ http://java.sun.com/\nenv(java.vendor.url.bug)\ \ \ \ \ \ \ \ \ \ \ =\ http://java.sun.com/cgi-bin/bugreport.cgi\nenv(java.version)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 1.6.0_41\nenv(java.vm.info)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ mixed\ mode,\ sharing\nenv(java.vm.name)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ Java\ HotSpot(TM)\ Client\ VM\nenv(java.vm.specification.name)\ \ \ \ =\ Java\ Virtual\ Machine\ Specification\nenv(java.vm.specification.vendor)\ \ =\ Sun\ Microsystems\ Inc.\nenv(java.vm.specification.version)\ =\ 1.0\nenv(java.vm.vendor)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ Sun\ Microsystems\ Inc.\nenv(java.vm.version)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 20.14-b01\nenv(line.separator)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\n\nenv(os.arch)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ x86\nenv(os.name)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ Windows\ XP\nenv(os.version)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 5.1\nenv(path.separator)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ \;\nenv(sun.arch.data.model)\ \ \ \ \ \ \ \ \ \ \ =\ 32\nenv(sun.boot.class.path)\ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\Java\\jre6\\lib\\resources.jar\;C:\\Programme\\Java\\jre6\\lib\\rt.jar\;C:\\Progr\namme\\Java\\jre6\\lib\\sunrsasign.jar\;C:\\Programme\\Java\\jre6\\lib\\jsse.jar\;C:\\Programme\\Java\\jre6\\lib\\jce.jar\;C:\\Programme\\Ja\nva\\jre6\\lib\\charsets.jar\;C:\\Programme\\Java\\jre6\\lib\\modules\\jdk.boot.jar\;C:\\Programme\\Java\\jre6\\classes\nenv(sun.boot.library.path)\ \ \ \ \ \ \ \ \ =\ C:\\Programme\\Java\\jre6\\bin\nenv(sun.cpu.endian)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ little\nenv(sun.cpu.isalist)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ pentium_pro+mmx\ pentium_pro\ pentium+mmx\ pentium\ i486\ i386\ i86\nenv(sun.desktop)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ windows\nenv(sun.io.unicode.encoding)\ \ \ \ \ \ \ =\ UnicodeLittle\nenv(sun.java.command)\ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ tcl.lang.Shell\nenv(sun.java.launcher)\ \ \ \ \ \ \ \ \ \ \ \ \ =\ SUN_STANDARD\nenv(sun.jnu.encoding)\ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ Cp1252\nenv(sun.management.compiler)\ \ \ \ \ \ \ =\ HotSpot\ Client\ Compiler\nenv(sun.os.patch.level)\ \ \ \ \ \ \ \ \ \ \ \ =\ Service\ Pack\ 3\nenv(user.country)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ DE\nenv(user.dir)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\jtcl-2.4.0\nenv(user.home)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ D:\\Home\\Hoffmann\nenv(user.language)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ de\nenv(user.name)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ HOFFMANN\nenv(user.timezone)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\nenv(user.variant)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\n%\n======\n\n\n\[TP\]\ I\ think\ I\ might\ see\ your\ problem,\ look\ at\ your\ command\ line:\n\nc:\\Programme\\jtcl-2.4.0>jtcl\ paraffin.tcl\ iskvprep6\ ./iskvprep6\ iskvprep6.bat\ .\n\nThe\ parameters\ to\ paraffin.tcl\ are\ '''app-name\ \ source-directory\ \ start-file\ \ \[\[\ jar-directory\ \]\]'''\n\n'''start-file'''\ should\ be\ the\ Tcl\ file\ that\ is\ your\ main\ script,\ not\ a\ batch\ file.\ \ \n'''jar-directory'''\ should\ be\ a\ directory\ that\ only\ contains\ the\ additional\ jar\ files\ you\ need\ for\ your\ application.\ \ You\ are\ using\ \".\"\ as\ the\ jar-directory,\ which\ probably\ contains\ files\ other\ than\ jar\ files.\ \ Does\ your\ application\ require\ additional\ jar\ files?\ \ If\ so,\ place\ all\ of\ those\ jar\ files\ in\ a\ clean\ directory.\n\nSee\ the\ example\ at:\ http://jtcl.kenai.com/docs/paraffin.html\ for\ more\ information.\n\n\[MHo\]:\ iskvprep6.bat\ ''is''\ a\ tcl\ script.\ Some\ scripts\ that\ I\ write\ always\ start\ this\ way:\n======\n#!/bin/sh\n#\ \\\nexec\ /iskv/tools/tclkitsh\ \"\$0\"\ \$\{1+\"\$@\"\}\n::if\ 0\ \{\n@cls\[email protected]\ \"%~dpn0.bat\"\ %*\n@goto\ :EOF\n\}\n\n:\n:\n======\nAnd\ I\ don't\ need\ additional\ JARs,\ I\ think.\ But\ of\ course\ I\ will\ look\ at\ the\ example.\n\n\[MHo\]\ 2013-03-08:\ Don't\ know\ what\ I\ made\ different\ than\ before\ (besides\ looking\ at\ the\ documentation\ page\ which\ I\ missed\ before),\ but\ the\ paraffin\ step\ now\ works\ ok\ and\ produces\ a\ .jar\ file.\ Running\ the\ .jar\ file\ gives\ the\ following\ error:\n======\nC:\\Programme\\jtcl-2.4.0>java\ -jar\ iskvprep6.jar\ncould\ not\ read\ \"resource:tcl/app/iskvprep6.bat\":\ no\ such\ file\ or\ directory\n\ \ \ \ while\ executing\n\"file\ mtime\ \[info\ script\"\n\ \ \ \ invoked\ from\ within\n\"clock\ format\ \[file\ mtime\ \[info\ script\]\]\ -format\ %d.%m.%Y\"\n\ \ \ \ invoked\ from\ within\n\"puts\ stderr\ \"\n\$script\ -\ \[clock\ format\ \[file\ mtime\ \[info\ script\]\]\ -format\ %d.%m.%Y\]\ -\ Anlegen\ von\ Unix-Gruppen,\ -Be\nnutzern\ und\ HomeDirs\ fuer\ 21c\n\nAufru...\"\n\ \ \ \ (\"if\"\ then\ script\ line\ 2)\n\ \ \ \ invoked\ from\ within\n\"if\ \{\$argc\ ==\ 0\ ||\ \$cIx\ <\ 0\}\ \{\n\ \ \ puts\ stderr\ \"\n\$script\ -\ \[clock\ format\ \[file\ mtime\ \[info\ script\]\]\ -format\ %d.%m.%Y\]\ -\\\nAnlegen\ von\ Unix-Gruppen,\ -Benu...\"\n======\n\[TP\]\ This\ error\ is\ from\ the\ '''file'''\ command\ not\ understanding\ the\ '''resource:'''\ convention.\ \ Instead\ of\ a\ true\ virtual\ file\ system\ (like\ C/Tcl),\ JTcl\ only\ recognizes\ resource:\ in\ '''open'''\ and\ '''source'''\ commands.\ \ To\ make\ this\ work,\ you'll\ have\ to\ modify\ your\ application\ to\ not\ use\ '''file'''\ on\ a\ resource:\ pathname.\ \n\n\[MHo\]:\ Then,\ how\ to\ get\ the\ filetime\ of\ the\ script\ itself?\n\n\[TP\]\ Unfortunately,\ there's\ not\ an\ easy\ way.\ \ The\ included\ package\ '''ziplib'''\ has\ a\ library\ command\ to\ open\ and\ traverse\ a\ zip\ or\ jar\ file.\ See\ the\ second\ example\ at:\ http://jtcl.kenai.com/docs/jtcllib/ziplib.html\ \ \ Instead\ of\ using\ the\ ''getName''\ method,\ use\ ''getTime'',\ which\ will\ return\ the\ zip\ entry's\ modification\ time\ in\ milliseconds.\ \ \ \ \ \n\n\[MHo\]\ 2015-01-13:\ Could\ not\ figure\ out\ how\ to\ get\ the\ directory\ from\ which\ the\ script\ (in\ this\ case\ inside\ the\ jar\ file)\ is\ running,\ as\ the\ usual\ methods\ (argv0,\ info\ script,\ etc.)\ of\ course\ don't\ work\ as\ expected.\ But\ often\ there\ are\ files\ alongside\ the\ jar\ which\ needs\ to\ be\ processed,\ and\ you\ don't\ always\ know\ from\ where\ the\ script\ is\ being\ called.\ Specifying\ absolute\ paths\ is\ not\ an\ option.\ The\ only\ workaround\ I\ found\ so\ far\ is:\ '''\[\[file\ dirname\ \[\[lindex\ \[\[split\ \$env(java.class.path)\ \\\;\]\]\ 0\]\]\]\]'''.\n\n<<categories>>\ Application\ |\ Graphics regexp2} CALL {my render JTcl |\ What\ |\ '''JTcl'''\ |\n|\ Where\ |\ ftp://ftp.gaertner.de/pub/j/jtcl-1.0.tar.gz\ |\n|\ Where\ |\ https://kenai.com/projects/jtcl/downloads\ |\n|\ Description\ |\ \[Java\]\ script\ library\ allowing\ access\ to\ the\ \[Tcl\]\ language.\ Can\ invoke\ Tcl\ extensions\ such\ as\ \[Tk\],\ allowing\ Java\ programmers\ to\ create\ GUI\ interfaces\ for\ Java\ applications.\ |\n|\ Updated\ |\ 07/2013\ |\n|\ Version\ |\ 2.5.0\ |\n|\ Contact\ |\ mailto:\ [email protected]\ |\n===\n----\n\n\[JTcl\ Interpreter\]\ is\ an\ implementation\ of\ Tcl\ (Tool\ Command\ Language)\ written\ in\ Java\ that\ implements\ a\ large\ extent\ of\ Tcl\ 8.4\ syntax\ and\ commands,\ limited\ only\ by\ API\ restrictions\ of\ the\ Java\ Virtual\ Machine.\ It\ is\ based\ on\ the\ Jacl\ interpreter\ from\ the\ TclJava\ project.\n\n----\n\n\[JTcl\ port\ for\ Android\]\n\n\n----\n\[mh2\]\ Is\ it\ still\ true\ for\ JTcl\ (NOT\ tclBlend\ !!)\ that\ \"tcl\ interp\ should\ have\ exactly\ one\ thread\"\n(that\ is\ exactly\ one\ thread\ can\ call\ \"eval\"\ method\ of\ a\ single\ tcl\ interp)\ \n???\n\n\[TP\]\ Yes.\ \ However,\ if\ you\ are\ looking\ for\ ways\ to\ have\ concurrency\ in\ your\ JTcl\ programs,\ check\ out\ the\ \n'''fleet'''\ package,\ written\ by\ JTcl\ maintainer\ Bruce\ Johnson.\ \ http://jtcl-project.github.io/jtcl/docs/jtcllib/fleet.html\nFleet\ creates\ a\ new\ interpreter\ and\ thread\ for\ each\ fleet\ member,\ and\ you\ communicate\ with\ those\ interp\ via\ messages.\n\n\[mh2\]\ Thanks.\ In\ fact\ I\ was\ trying\ to\ embed\ JTcl\ in\ \"vaadin\"\ (RIA\ web\ framework).\nI\ didnt\ know\ if\ java\ listeners\ can\ eval\ tcl\ code\ directly,\ \nnow\ for\ each\ JTcl\ interp\ I\ have\ a\ thread\ with\ event\ loop,\nand\ java\ listeners\ sends\ events\ with\ tcl\ code\ to\ that\ loop.\nBy\ the\ way:\ I\ know\ about\ great\ Aejaks\ software\ using\ Echo2,\nbut\ it\ seems\ to\ me\ that\ vaadin\ has\ some\ advantages\ over\ echo2:\non\ android\ browsers\ vaadin\ works\ better\ than\ echo2,\nalso\ vaadin\ seems\ to\ be\ more\ extendable\ (by\ GWT).\n\n\[TP\]\ The\ way\ to\ handle\ accessing\ the\ JTcl\ interp\ from\ multiple\ threads\ is\ via\ the\ event\ mechanism.\ \ Aejaks\ does\ this\ in\ several\ places,\nso\ it\ might\ serve\ as\ a\ guide.\ \ If\ I\ were\ doing\ Aejaks\ over\ again\ today,\ I\ would\ certainly\ use\ Vaadin\ instead\ of\ Echo2/3.\ \ Feel\ free\ to\ contact\ me\nvia\ email\ or\ Tcl'ers\ chat.\n\n----\n<<discussion>>\n\[MHo\]\ 2013-03-01:\ The\ tool\ '''paraffin.tcl'''\ doesn't\ work\ for\ me\ (Windows\ XP\ platform).\ The\ command\n======\nset\ jtclJar\ \[ziplib::getClassLocation\ \[java::getinterp\]\]\n======\ngives\ an\ unusable\ filename\ on\ windows,\ with\ a\ leading\ slash\ '/'.\ But\ even\ working\ around\ this,\ somethings\ going\ wrong\ (did\ not\ have\ the\ time\ to\ look\ further\ yet):\n======none\nc:\\Programme\\jtcl-2.4.0>jtcl\ paraffin.tcl\ iskvprep6\ ./iskvprep6\ iskvprep6.bat\ .\ncould\ not\ open\ file\ \".\\echopath\":\ file\ is\ not\ a\ zip\ file\n\ \ \ \ while\ executing\n\"error\ \"could\ not\ open\ file\ \\\"\$fileName\\\":\ file\ is\ not\ a\ zip\ file\"\"\n\ \ \ \ (\"if\"\ then\ script\ line\ 2)\n\ \ \ \ invoked\ from\ within\n\"if\ \{\[java::isnull\ \$ent\]\}\ \{\n\ \ \ \ \ \ \ \ error\ \"could\ not\ open\ file\ \\\"\$fileName\\\":\ file\ is\ not\ a\ zip\ file\"\n\ \ \ \ \}\"\n\ \ \ \ (procedure\ \"ziplib::openInputZip\"\ line\ 16)\n\ \ \ \ invoked\ from\ within\n\"ziplib::openInputZip\ \$jar\"\n\ \ \ \ invoked\ from\ within\n\"set\ jarin\ \[ziplib::openInputZip\ \$jar\]\"\n\ \ \ \ (\"foreach\"\ body\ line\ 5)\n\ \ \ \ invoked\ from\ within\n\"foreach\ jar\ \$jars\ \{\n\ \ \ \ \ \ \ \ if\ \{!\ \[file\ isfile\ \$jar\]\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ continue\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ set\ jarin\ \[ziplib::openInputZip\ \$jar\]\n\ \ \ \ \ \ \ \ ziplib::c...\"\n\ \ \ \ (procedure\ \"mkJar\"\ line\ 22)\n\ \ \ \ invoked\ from\ within\n\"mkJar\ \$app\ \$srcdir\ \$start\ \$libdir\"\n\ \ \ \ (procedure\ \"cmdLine\"\ line\ 32)\n\ \ \ \ invoked\ from\ within\n\"cmdLine\"\n\ \ \ \ (file\ \"paraffin.tcl\"\ line\ 79)\n======\n\n\[TP\]\ Could\ you\ file\ a\ bug\ report\ at\ http://kenai.com/bugzilla/buglist.cgi?product=jtcl\ \ ?\ \ Please\ include\ Java\ version,\ and\ the\ pathname\ of\ your\ Java\ installation.\n\[MHo\]:\ No,\ I\ don't,\ because\ doing\ this\ requires\ a\ login/registration.\ The\ JRE\ used\ was\ 1.6.0_41.\ But\ the\ fix\ could\ be\ as\ simple\ as\ this\ e.g.:\n======\n\ \ \ \ #\ fix-start\n\ \ \ \ if\ \{\[string\ match\ -nocase\ windows*\ \$::tcl_platform(os)\]\}\ \{\n\ \ \ \ \ \ \ set\ jtclJar\ \[string\ trimleft\ \$jtclJar\ /\]\n\ \ \ \ \}\n\ \ \ \ #\ fix-end\n======\n\n\[TP\]\ '''What\ is\ the\ pathname\ of\ your\ Java\ install'''?\ \ Please\ attach\ the\ output\ of\ \"parray\ env\"\ from\ the\ JTcl\ interactive\ shell.\ \ By\ the\ way,\ http://mailinator.com\ is\ useful\ for\ one-time\ email\ addresses\ :-)\n======\n%\ parray\ env\nenv(CLASSPATH)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\jtcl-2.4.0\\\\jtcl-2.4.0.jar\;.\;C:\\Programme\\Java\\jre1.6.0_07\\lib\\ext\\QTJ\nava.zip\nenv(HOME)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ D:\\Home\\Hoffmann\nenv(USER)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ HOFFMANN\nenv(awt.toolkit)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ sun.awt.windows.WToolkit\nenv(file.encoding)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ Cp1252\nenv(file.encoding.pkg)\ \ \ \ \ \ \ \ \ \ \ \ \ =\ sun.io\nenv(file.separator)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ \\\nenv(java.awt.graphicsenv)\ \ \ \ \ \ \ \ \ \ =\ sun.awt.Win32GraphicsEnvironment\nenv(java.awt.printerjob)\ \ \ \ \ \ \ \ \ \ \ =\ sun.awt.windows.WPrinterJob\nenv(java.class.path)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\jtcl-2.4.0\\\\jtcl-2.4.0.jar\;.\;C:\\Programme\\Java\\jre1.6.0_07\\lib\\ext\\QTJ\nava.zip\nenv(java.class.version)\ \ \ \ \ \ \ \ \ \ \ \ =\ 50.0\nenv(java.endorsed.dirs)\ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\Java\\jre6\\lib\\endorsed\nenv(java.ext.dirs)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\Java\\jre6\\lib\\ext\;C:\\WINDOWS\\Sun\\Java\\lib\\ext\nenv(java.home)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\Java\\jre6\nenv(java.io.tmpdir)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ d:\\var\\temp\\\nenv(java.library.path)\ \ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\WINDOWS\\system32\;C:\\WINDOWS\\Sun\\Java\\bin\;C:\\WINDOWS\\system32\;C:\\WINDOWS\;C:\\Progr\namme\\Tcl\\bin\;C:\\Programme\\ActiveState\ Komodo\ Edit\ 7\\\;C:\\Programme\\caesar\\OraClientNet\\bin\;C:\\Programme\\caesar\\OraClientN\net\\\;C:\\Programme\\Python27\\\;C:\\Programme\\Python27\\Scripts\;C:\\WINDOWS\\system32\;C:\\WINDOWS\;C:\\WINDOWS\\system32\\WBEM\;c:\\Prog\nramme\\misctool\;d:\\home\\Hoffmann\\pgm\\tcl\\usr\\bin\;c:\\Programme\\sysinternals2\;C:\\Programme\\ResKits\\Tools\\\;C:\\Programme\\Supp\nort\ Tools\\\;C:\\Programme\\Pbx\;C:\\Programme\\Perl\\site\\bin\;C:\\Programme\\Perl\\bin\;c:\\Programme\\Regina\;C:\\Programme\\Lua\\5.1\;C:\n\\Programme\\Lua\\5.1\\clibs\;C:\\Programme\\coreutils\;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\;C:\\Programme\\ooRexx\;C:\\Progra\nmme\\Subversion\\bin\;C:\\Programme\\Gemeinsame\ Dateien\\Acronis\\SnapAPI\\\;C:\\Programme\\Citrix\\System32\\\;C:\\WINDOWS\\system32\\Wi\nndowsPowerShell\\v1.0\;C:\\Programme\\Citrix\\System32\\\;%APPDATA%\\Python\\Scripts\;c:\\programme\\unix2\;C:\\programme\\texlive\\2011\n\\bin\\win32\;c:\\programme\\mingw\\bin\;c:\\Programme\\MinGW\\msys\\1.0\\bin\;\;.\nenv(java.runtime.name)\ \ \ \ \ \ \ \ \ \ \ \ \ =\ Java(TM)\ SE\ Runtime\ Environment\nenv(java.runtime.version)\ \ \ \ \ \ \ \ \ \ =\ 1.6.0_41-b02\nenv(java.specification.name)\ \ \ \ \ \ \ =\ Java\ Platform\ API\ Specification\nenv(java.specification.vendor)\ \ \ \ \ =\ Sun\ Microsystems\ Inc.\nenv(java.specification.version)\ \ \ \ =\ 1.6\nenv(java.vendor)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ Sun\ Microsystems\ Inc.\nenv(java.vendor.url)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ http://java.sun.com/\nenv(java.vendor.url.bug)\ \ \ \ \ \ \ \ \ \ \ =\ http://java.sun.com/cgi-bin/bugreport.cgi\nenv(java.version)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 1.6.0_41\nenv(java.vm.info)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ mixed\ mode,\ sharing\nenv(java.vm.name)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ Java\ HotSpot(TM)\ Client\ VM\nenv(java.vm.specification.name)\ \ \ \ =\ Java\ Virtual\ Machine\ Specification\nenv(java.vm.specification.vendor)\ \ =\ Sun\ Microsystems\ Inc.\nenv(java.vm.specification.version)\ =\ 1.0\nenv(java.vm.vendor)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ Sun\ Microsystems\ Inc.\nenv(java.vm.version)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 20.14-b01\nenv(line.separator)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\n\nenv(os.arch)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ x86\nenv(os.name)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ Windows\ XP\nenv(os.version)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 5.1\nenv(path.separator)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ \;\nenv(sun.arch.data.model)\ \ \ \ \ \ \ \ \ \ \ =\ 32\nenv(sun.boot.class.path)\ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\Java\\jre6\\lib\\resources.jar\;C:\\Programme\\Java\\jre6\\lib\\rt.jar\;C:\\Progr\namme\\Java\\jre6\\lib\\sunrsasign.jar\;C:\\Programme\\Java\\jre6\\lib\\jsse.jar\;C:\\Programme\\Java\\jre6\\lib\\jce.jar\;C:\\Programme\\Ja\nva\\jre6\\lib\\charsets.jar\;C:\\Programme\\Java\\jre6\\lib\\modules\\jdk.boot.jar\;C:\\Programme\\Java\\jre6\\classes\nenv(sun.boot.library.path)\ \ \ \ \ \ \ \ \ =\ C:\\Programme\\Java\\jre6\\bin\nenv(sun.cpu.endian)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ little\nenv(sun.cpu.isalist)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ pentium_pro+mmx\ pentium_pro\ pentium+mmx\ pentium\ i486\ i386\ i86\nenv(sun.desktop)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ windows\nenv(sun.io.unicode.encoding)\ \ \ \ \ \ \ =\ UnicodeLittle\nenv(sun.java.command)\ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ tcl.lang.Shell\nenv(sun.java.launcher)\ \ \ \ \ \ \ \ \ \ \ \ \ =\ SUN_STANDARD\nenv(sun.jnu.encoding)\ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ Cp1252\nenv(sun.management.compiler)\ \ \ \ \ \ \ =\ HotSpot\ Client\ Compiler\nenv(sun.os.patch.level)\ \ \ \ \ \ \ \ \ \ \ \ =\ Service\ Pack\ 3\nenv(user.country)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ DE\nenv(user.dir)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ C:\\Programme\\jtcl-2.4.0\nenv(user.home)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ D:\\Home\\Hoffmann\nenv(user.language)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ de\nenv(user.name)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ HOFFMANN\nenv(user.timezone)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\nenv(user.variant)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\n%\n======\n\n\n\[TP\]\ I\ think\ I\ might\ see\ your\ problem,\ look\ at\ your\ command\ line:\n\nc:\\Programme\\jtcl-2.4.0>jtcl\ paraffin.tcl\ iskvprep6\ ./iskvprep6\ iskvprep6.bat\ .\n\nThe\ parameters\ to\ paraffin.tcl\ are\ '''app-name\ \ source-directory\ \ start-file\ \ \[\[\ jar-directory\ \]\]'''\n\n'''start-file'''\ should\ be\ the\ Tcl\ file\ that\ is\ your\ main\ script,\ not\ a\ batch\ file.\ \ \n'''jar-directory'''\ should\ be\ a\ directory\ that\ only\ contains\ the\ additional\ jar\ files\ you\ need\ for\ your\ application.\ \ You\ are\ using\ \".\"\ as\ the\ jar-directory,\ which\ probably\ contains\ files\ other\ than\ jar\ files.\ \ Does\ your\ application\ require\ additional\ jar\ files?\ \ If\ so,\ place\ all\ of\ those\ jar\ files\ in\ a\ clean\ directory.\n\nSee\ the\ example\ at:\ http://jtcl.kenai.com/docs/paraffin.html\ for\ more\ information.\n\n\[MHo\]:\ iskvprep6.bat\ ''is''\ a\ tcl\ script.\ Some\ scripts\ that\ I\ write\ always\ start\ this\ way:\n======\n#!/bin/sh\n#\ \\\nexec\ /iskv/tools/tclkitsh\ \"\$0\"\ \$\{1+\"\$@\"\}\n::if\ 0\ \{\n@cls\[email protected]\ \"%~dpn0.bat\"\ %*\n@goto\ :EOF\n\}\n\n:\n:\n======\nAnd\ I\ don't\ need\ additional\ JARs,\ I\ think.\ But\ of\ course\ I\ will\ look\ at\ the\ example.\n\n\[MHo\]\ 2013-03-08:\ Don't\ know\ what\ I\ made\ different\ than\ before\ (besides\ looking\ at\ the\ documentation\ page\ which\ I\ missed\ before),\ but\ the\ paraffin\ step\ now\ works\ ok\ and\ produces\ a\ .jar\ file.\ Running\ the\ .jar\ file\ gives\ the\ following\ error:\n======\nC:\\Programme\\jtcl-2.4.0>java\ -jar\ iskvprep6.jar\ncould\ not\ read\ \"resource:tcl/app/iskvprep6.bat\":\ no\ such\ file\ or\ directory\n\ \ \ \ while\ executing\n\"file\ mtime\ \[info\ script\"\n\ \ \ \ invoked\ from\ within\n\"clock\ format\ \[file\ mtime\ \[info\ script\]\]\ -format\ %d.%m.%Y\"\n\ \ \ \ invoked\ from\ within\n\"puts\ stderr\ \"\n\$script\ -\ \[clock\ format\ \[file\ mtime\ \[info\ script\]\]\ -format\ %d.%m.%Y\]\ -\ Anlegen\ von\ Unix-Gruppen,\ -Be\nnutzern\ und\ HomeDirs\ fuer\ 21c\n\nAufru...\"\n\ \ \ \ (\"if\"\ then\ script\ line\ 2)\n\ \ \ \ invoked\ from\ within\n\"if\ \{\$argc\ ==\ 0\ ||\ \$cIx\ <\ 0\}\ \{\n\ \ \ puts\ stderr\ \"\n\$script\ -\ \[clock\ format\ \[file\ mtime\ \[info\ script\]\]\ -format\ %d.%m.%Y\]\ -\\\nAnlegen\ von\ Unix-Gruppen,\ -Benu...\"\n======\n\[TP\]\ This\ error\ is\ from\ the\ '''file'''\ command\ not\ understanding\ the\ '''resource:'''\ convention.\ \ Instead\ of\ a\ true\ virtual\ file\ system\ (like\ C/Tcl),\ JTcl\ only\ recognizes\ resource:\ in\ '''open'''\ and\ '''source'''\ commands.\ \ To\ make\ this\ work,\ you'll\ have\ to\ modify\ your\ application\ to\ not\ use\ '''file'''\ on\ a\ resource:\ pathname.\ \n\n\[MHo\]:\ Then,\ how\ to\ get\ the\ filetime\ of\ the\ script\ itself?\n\n\[TP\]\ Unfortunately,\ there's\ not\ an\ easy\ way.\ \ The\ included\ package\ '''ziplib'''\ has\ a\ library\ command\ to\ open\ and\ traverse\ a\ zip\ or\ jar\ file.\ See\ the\ second\ example\ at:\ http://jtcl.kenai.com/docs/jtcllib/ziplib.html\ \ \ Instead\ of\ using\ the\ ''getName''\ method,\ use\ ''getTime'',\ which\ will\ return\ the\ zip\ entry's\ modification\ time\ in\ milliseconds.\ \ \ \ \ \n\n\[MHo\]\ 2015-01-13:\ Could\ not\ figure\ out\ how\ to\ get\ the\ directory\ from\ which\ the\ script\ (in\ this\ case\ inside\ the\ jar\ file)\ is\ running,\ as\ the\ usual\ methods\ (argv0,\ info\ script,\ etc.)\ of\ course\ don't\ work\ as\ expected.\ But\ often\ there\ are\ files\ alongside\ the\ jar\ which\ needs\ to\ be\ processed,\ and\ you\ don't\ always\ know\ from\ where\ the\ script\ is\ being\ called.\ Specifying\ absolute\ paths\ is\ not\ an\ option.\ The\ only\ workaround\ I\ found\ so\ far\ is:\ '''\[\[file\ dirname\ \[\[lindex\ \[\[split\ \$env(java.class.path)\ \\\;\]\]\ 0\]\]\]\]'''.\n\n<<categories>>\ Application\ |\ Graphics} CALL {my revision JTcl} CALL {::oo::Obj1371606 process revision/JTcl} CALL {::oo::Obj1371604 process}

-errorcode

NONE

-errorinfo

Unknow state transition: LINE -> END
    while executing
"error $msg"
    (class "::Wiki" method "render_wikit" line 6)
    invoked from within
"my render_$default_markup $N $C $mkup_rendering_engine"
    (class "::Wiki" method "render" line 8)
    invoked from within
"my render $name $C"
    (class "::Wiki" method "revision" line 31)
    invoked from within
"my revision $page"
    (class "::Wiki" method "process" line 56)
    invoked from within
"$server process [string trim $uri /]"

-errorline

4