[Opensource] Re: eForum Kicking Tires
David Herron
davidh at 7gen.com
Sat Jul 20 22:20:45 PDT 2002
I've gotten a little further. MikeR suggested using the CVS source
tree for everything rather than the built eForum, as he has been
making changes to eForum.
But now I'm stuck in a different way and don't even have Expresso
running. This is the log of what I had to do to get running. Much
of this are things which could be improved in the build process or
build documentation.
It may be important to note that I'm using ant 1.5beta2.
The last problem, though, is a real stumper and that's where I'm
stuck. I'd appreciate any help.
- David Herron
Installing Expresso into Resin from CVS
------------------------
ERROR 1: Running "ant" (no args) I get
Resolved by commenting out the <taskdef> and <target> for "jalopy" at the end.
BUILD FAILED
/Users/david/Expresso/src-cvs/expresso/expresso-web/build.xml:360:
taskdef class de.hunsicker.jalopy.plugin.ant.AntPlugin cannot be found
-------------------------
ERROR 2: The "war" target doesn't exist, despite the usage comments
in build.xml.
Resolved by not using "war" but "expresso-complete".
[peebee:src-cvs/expresso/expresso-web] david% ant war
Buildfile: build.xml
BUILD FAILED
Target `war' does not exist in this project.
----------------------------
ERROR 3: The expresso/expresso-web/WEB-INF/lib directory doesn't exist:
Resolved by creating the lib directory.
[peebee:src-cvs/expresso/expresso-web] david% ant expresso-complete
Buildfile: build.xml
init:
BUILD FAILED
/Users/david/Expresso/src-cvs/expresso/expresso-web/WEB-INF/lib not found.
-------------------------------
ERROR 4: Now there's a bunch of compile errors for missing symbols
and the like. They
are from the org.apache.log4j, javax.servlet, org.apache.commons.*,
org.apache.struts.*,
org.apache.oro.*, edu.oswego.cs.dl.util.*, javax.activation, and
javax.sql packages.
Resolution is a bit convoluted. Turns out there's a multiplicity of
ant build.xml files
floating around, not just the one at the top of the tree (hmmm,
why???!?). In any case,
it's simple enough to add the relavent .jar files to the CLASSPATH.
Most of the required
jar files come with the expresso-complete distribution. Missing are
javax.servlet (provided
by Caucho in the Resin distribution as .../lib/jsdk23.jar) and the
edu.oswego part. The oswego
package isn't documented on JCorporate's web site, that I see.
Doing a google search I end up at
http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html
which seems to be the definitive place to go. Unpacked that source
distribution, and made its
directory "oswego-concurrent-src" and also made a directory
"oswego-concurrent". CD'd to
oswego-concurrent-src and typed:
javac -d ../oswego-concurrent *.java
Added the oswego-concurrent directory to the CLASSPATH environment variable.
I have the following resulting shell script:
[peebee:src-cvs/expresso/expresso-web] david% cat mk
#!/bin/sh
RESIN=/Users/david/Expresso/resin-2.1.2
EXPRESSO=/Users/david/Expresso/expresso-tools
CLASSPATH=${RESIN}/lib/jsdk23.jar:${RESIN}/lib/jdbc-mysql.jar:/Users/david/Expresso/oswego-concurrent
for i in /Users/david/Expresso/expresso-tools/*.jar; do
CLASSPATH="${CLASSPATH}":"${i}"
done
export CLASSPATH
ant $*
[peebee:src-cvs/expresso/expresso-web] david%
------------------------------
ERROR 5: The build fails because of this message
BUILD FAILED
/Users/david/Expresso/src-cvs/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/build.xml:275:
No source files and no packages have been specified.
The line in question is in the middle of the javadoc target. Since I
don't care
about generating javadoc, I simply commented the body of the target.
Except that commenting
it out doesn't resolve anything. So I undid the commenting out.
What resolved the problem is to build "expresso-binary" rather than
"expresso-complete".
---------------------------------
PROBLEM 1: Now that I have an expresso-xx-complete.war, it's
**MISSING** eForum and eSearch
even though I have that source checked out. Glancing through the ant
build.xml shows that
this is the intended behavior. Since they're separate "products" you
probably hafta build
them separately.
Ah, that was easy. Found the ant build.xml file for eForum, read
that, and then in the
master build.xml file see the "components" target that was documented
in the usage message.
---------------------------------
ERROR 6: Building "components" gives the following error.
BUILD FAILED
/Users/david/Expresso/src-cvs/expresso/expresso-web/WEB-INF/src/com/jcorporate/eforum/build.xml:94:
No source files and no packages have been specified.
Looking at the "components" tag, I see that it wants to build -src.jar files as
well as the actual component.
Resolved by: Since I don't care about the -src.jar files, I've
commented them out and the build
runs to completion.
Now I have the following:
[peebee:src-cvs/expresso/expresso-web] david% ls ..
CVS eforum2-22-ea1.jar esearch0-90.jar
expresso4-1-ea3-bin.war
META-INF epoll2-21-ea1.jar expresso-web
[peebee:src-cvs/expresso/expresso-web] david%
-----------------------------------
ERROR 7: Running the resin bin/httpd.sh gives the message
DefaultInit: init
Expresso Configuration initializing...
Initialization error:
java.lang.NoClassDefFoundError: org/apache/xerces/parsers/AbstractDOMParser
at
com.jcorporate.expresso.core.misc.ConfigManager.config(ConfigManager.java:1126)
at
com.jcorporate.expresso.core.servlet.StdServlet.init(StdServlet.java:309)
at
com.jcorporate.expresso.core.servlet.DBServlet.init(DBServlet.java:48)
at
com.jcorporate.expresso.core.servlet.InitServlet.init(InitServlet.java:70)
at
com.jcorporate.expresso.core.servlet.DefaultInit.init(DefaultInit.java:57)
at
com.caucho.server.http.Application.createServlet(Application.java:2982)
at
com.caucho.server.http.Application.loadServlet(Application.java:2941)
at
com.caucho.server.http.Application.initServlets(Application.java:1841)
at com.caucho.server.http.Application.init(Application.java:1772)
at com.caucho.server.http.VirtualHost.init(VirtualHost.java:621)
at
com.caucho.server.http.ServletServer.initHosts(ServletServer.java:831)
at
com.caucho.server.http.ServletServer.initInternal(ServletServer.java:648)
at com.caucho.server.http.ServletServer.init(ServletServer.java:483)
at com.caucho.server.http.ResinServer.init(ResinServer.java:360)
at com.caucho.server.http.ResinServer.main(ResinServer.java:1107)
at com.caucho.server.http.HttpServer.main(HttpServer.java:103)
Note that the requisite .jar files were not in CVS and therefore were
not checked out into
the workspace. I have the .jar files separately (from the downloaded
-complete.jar file
off the web site). Both putting them into the CLASSPATH and putting
them into WEB-INF/lib
does not help. The class being looked for, AbstractDOMParser, is not
directly referenced
from Expresso src (shown from greping the whole source tree).
Checked at xml.apache.org and downloading the latest Xerces
distribution (Xerces-J-bin.2.0.2.tar.gz).
Found a xercesImpl.jar which included the AbstractDOMParser class.
Installed this into
the WEB-INF/lib directory, and removed the xerces.jar which had come
with the expresso
distribution.
---------------------------------
ERROR 8: Now there's a different error:
DefaultInit: init
Expresso Configuration initializing...
Initialization error:
java.lang.VerifyError: (class:
com/jcorporate/expresso/core/logging/LogManager, method: initialize
signature: ()V) Incompatible object argument for function call
at
com.jcorporate.expresso.core.misc.ConfigManager.config(ConfigManager.java:1126)
at
com.jcorporate.expresso.core.servlet.StdServlet.init(StdServlet.java:309)
at
com.jcorporate.expresso.core.servlet.DBServlet.init(DBServlet.java:48)
at
com.jcorporate.expresso.core.servlet.InitServlet.init(InitServlet.java:70)
at
com.jcorporate.expresso.core.servlet.DefaultInit.init(DefaultInit.java:57)
at
com.caucho.server.http.Application.createServlet(Application.java:2982)
at
com.caucho.server.http.Application.loadServlet(Application.java:2941)
at
com.caucho.server.http.Application.initServlets(Application.java:1841)
at com.caucho.server.http.Application.init(Application.java:1772)
at com.caucho.server.http.VirtualHost.init(VirtualHost.java:621)
at
com.caucho.server.http.ServletServer.initHosts(ServletServer.java:831)
at
com.caucho.server.http.ServletServer.initInternal(ServletServer.java:648)
at com.caucho.server.http.ServletServer.init(ServletServer.java:483)
at com.caucho.server.http.ResinServer.init(ResinServer.java:360)
at com.caucho.server.http.ResinServer.main(ResinServer.java:1107)
at com.caucho.server.http.HttpServer.main(HttpServer.java:103)
[2002-07-20 17:15:47.312] initializing application
http://localhost:8080/java_tut
...and later...
http can't bind to *:8080. Check for conflicting servers.
[2002-07-20 17:16:01.105] closing application http://localhost:8080/
[2002-07-20 17:16:01.440] initializing application http://localhost:8080/
This is confusing. In ConfigManager is
LogManager.setupLog();
This refers to a static method which returns Category. There is not
a method by that name which
returns "void", as the signature says. So what can this be referring to.
Theory 1: It's confused because at the calling line nothing is done with the
return value. Changing this to "Category __cc = LogManager.setupLog()"
changed nothing.
Theory 2: There's a local variable in LogManager also named setupLog, and this
might be confusing the compiler. Changed all instances of
the local variable
to prepend an underscore (that is, "_setupLog" vs
"setupLog"). Again, no
change.
Grasping at straws 1: Put a try{}catch(){} around the call. It gets
a little further.
This method gets called in lots of places though, and now we
just get the message
a bunch of other times. Also connecting to the resin web
server gives a similar
error message:
500 Servlet Exception
java.lang.VerifyError: (class: com/jcorporate/expresso/core/logging/LogManager,
method: initialize signature: ()V) Incompatible object argument for function
call
at _expresso._error__jsp._jspService(/expresso/error.jsp:19)
at com.caucho.jsp.JavaPage.service(JavaPage.java:75)
at com.caucho.jsp.Page.subservice(Page.java:485)
at
com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182)
at com.caucho.server.http.Invocation.service(Invocation.java:311)
at
com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at
com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:213)
at
com.caucho.jsp.QPageContext.handlePageException(QPageContext.java:592)
at _expresso._frame__jsp._jspService(_frame__jsp.java:192)
at com.caucho.jsp.JavaPage.service(JavaPage.java:75)
at com.caucho.jsp.Page.subservice(Page.java:485)
at
com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182)
at com.caucho.server.http.Invocation.service(Invocation.java:311)
at
com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at
com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:221)
at
com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:163)
at com.caucho.server.TcpConnection.run(TcpConnection.java:137)
at java.lang.Thread.run(Thread.java:496)
More information about the Opensource
mailing list