Ok, I’m thinking this is just something really dumb on my part so here it is:
I’ve working on HelloModelLoading trying to get the code working for my own models. First off, the buildtest.xml fails on my system so I could not test the pure HelloModelLoading to see that it works. The error I get when running
“C:Documents and SettingsDavidMy DocumentsDevjme>ant -f buildtest.xml”
[javac] Compiling 136 source files to C:Documents and SettingsDavidMy DocumentsDevjmetestbuild
[javac] C:Documents and SettingsDavidMy DocumentsDevjmesrcjmetestTutorialGuideHelloAnimation.java:4: package com.jme.scene.shape does not exist
[javac] import com.jme.scene.shape.Box;
This is using the CVS tree I checked out 1.5 hours ago. I blew away my old copy and grabbed it fresh just to be sure.
The whole reason I was trying to run the test was in my own version of HelloModelLoading I am getting a java.lang.NullPointerException when I try "converter.convert". I tracked the problem down to the URL object being a null pointer.
URL model = Main.class.getClassLoader().getResource("maggie.obj");
FormatConverter converter = new ObjToJme();
ByteArrayOutputStream BO = new ByteArrayOutputStream();
JmeBinaryReader jbr = new JmeBinaryReader();
Node baby = new Node("Maggie");
baby = jbr.loadBinaryFormat(new ByteArrayInputStream(BO.toByteArray()));
I have an ant build file that jar's all that up and then I put the maggie model and material file in the same directory. The
is always true no matter how I switch my paths around in my run command (also part of my ant buildfile). I guess I don't really get where the "root" of the path is when using a relative path. I would think it would be where the jar being executed is or perhaps where I'm running the ant file from. Sorry if this is a dumb problem but I've been messing with this for 4 hours now and it's terribly frustrating. 8-O
I should have mentioned that I can do "ant dist" and that works fine, I get the jme.jar no problem.
when you do an ant dist, do you still have the class files? or is just the jar there?
Under the build/com/jme directory I have all of the various directories that appear in src/com/jme. All of them seem to have the appropriate .class files based on what is in the /src/com/jme directories.
I’m also getting plenty of errors using the buildtest.xml file. Looking into it.
Ok, I just did:
ant -f buildtest.xml
and it worked. shrug
see if that helps.
Ok, thank you very much that worked for me too. I finally realized my errors and I will write out my solution so anyone else unfamiliar with the Java path system can avoid my many wasted hours.
First off I did not realize that there is no common "base" directory from which your app is running. I thought that you could make a relative path /assets/models/maggie.obj whithout also including the parent folder of /assets in the classpath. This seems to have been my biggest problem. For anyone having a similar issue, here was my directory structure.
/assets/models <-- I copied the file from here to /publish in the previous post to resolve the path issues
/assets/models <-- these are copied from /lib and /assets/models
Ok, so now I was using an ant build as I could not figure out how to get even the command line working :// This is the command line that I should have been using.
java -Djava.library.path=./lib -cp ./lib/lwjgl.jar;./lib/jme.jar;./publish -jar publish/palabra.jar
or in non-jar form
java -Djava.library.path=./lib -cp ./lib/lwjgl.jar;./lib/jme.jar;./publish;./bin com.hcs.palabra.Main
For the non-jar version the "./bin" must be added to the path as well.
Because I was not including the "./publish" nor was I including "./" the "/assets/models/maggie.obj" path had no root to start from and couldn't be found. Alternatively I could have referenced "./" instead of "./publish" in the classpath because there is an "/assets" in the root folder.
Phew. Thank you mojo for your help in getting me down the right path. Would it be of any use to newbies if I posted my build.xml file so others could see how I set up my project? If so just let me know where you want it.