[Source] XJ3D issues

Felipe Bacim fbacim at vt.edu
Thu May 27 15:02:35 PDT 2010


Hi all,

I'm writing to the list to report a few issues I'm having with the xj3d
libraries, the first one being related to the code available in the svn and
the other ones to the replaceWorld function.

*First issue*

First, my build environment is Mac OS 10.6.3, JDK 1.6.0_17. I'm having
serious issues using the Makefile provided, more specifically when I do
"make ogl". All errors (or most of, since this is from 2008) can be seen in
this webpage: http://www.vrspace.org/~joe/xj3d/Xj3D-linux-howto.html. This
guy used Fedora 8, JDK 1.6.0_06, so I'm guessing this is not a problem
exclusive to Mac OS. The problem is that the java compiler can't seem to
find reference to classes that are in the same directory.
One example of this is this very first error that I got:

Building directory src/java/org/web3d/util/


Compiling ErrorReporter.java

Compiling DefaultErrorReporter.java


src/java/org/web3d/util/DefaultErrorReporter.java:32: cannot find symbol

symbol: class ErrorReporter


public class DefaultErrorReporter implements ErrorReporter {

                                             ^


Anyway, as described in that webpage, the solution is pretty simple.
Every time this error occurs, just do


javac -d classes -extdirs lib src/java/org/web3d/util/*.java

and everything is compiled without errors. Well, since with the most recent
revision in the svn the number of times this happens is even greater than
what is described in that webpage, I've decided to write a python app that,
when executed from the trunk directory, parses the Makefile-opengl file to
find the directory build order, and opens the Makefile on each one of the
directories to find what files need to be compiled. The output is a bash
script that is doing all the necessary make steps and compiling everything
before "make ogl-jar" is called. This may seem like an overkill and may not
be the best workaround for this issue, but to me it seemed easier to write
the parser (it took me less than 20 minutes to write it) than to keep my
eyes on the compilation process or to go through the Makefiles and find what
is causing this with a library that is so big. Anyway, I'm now able to
compile everything without a problem. If anyone is interested in either the
Python parser or the bash script, just let me know and I will post them
here.

*Second issue*

The second issue I'm having is with the replaceWorld function, just exactly
as described in http://www.web3d.org/message_boards/viewtopic.php?f=7&t=1353and
http://bugzilla.xj3d.org/show_bug.cgi?id=616. Even though the topic and the
bug report only talk about adding nodes, with the most recent revision I'm
not being able to do anything, even when I just try to get a root node and
change some field. The only solution I could find for this is to dispose the
window and use a new x3dBrowser instance, which is far from ideal. This
happens AFTER the second time I use the replaceWorld function. With the
older version I was using, a 2007 snapshot, this problem didn't exist.

*Third issue*

The last issue I have is that, in addition to all that was described above,
the replaceWorld() function seems to have serious memory leak issues. The
.java source in
http://dl.dropbox.com/u/2103745/MemoryLeakTest.zipexemplifies this
problem by loading an x3d file every time you press a
button. Its going from ~170mb up to ~680mb by just loading the same x3d file
over and over again. I'm not sure if its an issue with xj3d or with java but
it gets even worse when using this function in an application that loads x3d
files all the time. However, this does not generates any errors, and despite
high memory usage, the application seems to keep working just fine no matter
how many times I call replaceWorld. This changes when I register listeners
to nodes in the scene every time I load an x3d; then I get an
OutOfMemoryError. I guess one possible solution for this would be to remove
the event listeners before calling replaceWorld, but just using the
removeX3DEventListener function doesn't seem to solve the problem. Perhaps
that's the function that is generating the error? Anyway, both versions of
xj3d that I used to date have this issue (2007 snapshot and latest revision
in the svn).
Note: I'm using the same object for all listeners and that the events are
not being generated. This problem happens even when I just register
listeners to nodes, so this shouldn't be a problem with my code considering
also that everything works just fine when I don't register listeners.

If anyone knows of a snapshot version on which these issues don't exist,
please let me know.

Best regards,
Felipe Bacim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/mailman/private/source_web3d.org/attachments/20100527/1003b37f/attachment.html>


More information about the Source mailing list