Java3d V1.7.1, ClassNotFoundException outside of Eclipse IDE

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Java3d V1.7.1, ClassNotFoundException outside of Eclipse IDE

lermontov
Hello all, I have a problem to use the new V1.7.1 Java3d outside of the eclipse;

Up to now I used Java3d V1.5.2, three jar files and four native .dll within an OSGI plugins; was fine!
Intel and NVIDIA worked well but ATI wont render 3d objects;

Then I changed the Java3d to the newest version (1.7.1) inclusive Jogamp V2.3.2; when I start the whole product from Eclipse IDE it works fine;
But, when I export only the corresponding plugin as a jar file and replace it in the Product installation, I get ClaasNotFoundException "java.lang.ClassNotFoundException: org.jogamp.java3d.Node cannot be found by..."

The same with the Java3d V1.7.0; it seems to be, that something with classpath is wrong;

As if the j3dcore.jar is not in the classpath, but it is there!

I use j3dcore,jar, j3dutils,jar, vecmath.jar, gluegen-rt.jar, jogl-all.jar and corresponding windows-i586 native dlls.
These files are in the plugin and not in the "jre/lib/ext"

Do I forgot to use "jogamp-fat-all"?

Many thanks in advance...
Reply | Threaded
Open this post in threaded view
|

Re: Java3d V1.7.1, ClassNotFoundException outside of Eclipse IDE

gouessej
Administrator
Hello

Have you read my tutorial?
https://gouessej.wordpress.com/2012/08/01/java-3d-est-de-retour-java-3d-is-back/

Sorry for the silly question but how do you set your classpath? What do you put into it? I'm not a specialist of OSGI, I might miss some considerations.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Java3d V1.7.1, ClassNotFoundException outside of Eclipse IDE

lermontov
Yes, I read you tutorial, 10 times, could be
and the whole JOGAMP site;
(is using of jogamp-fat-all.jar an up-to-date practice or discouraged?)

But now, the Eclipse project uses PDE, (Plugin Development Environment) with OSGI Equinox to build a plugin (jar file);
There is a MANIFEST.MF file and in this file following content

Bundle-ClassPath: .,
 lib/Java3d_171/j3dcore.jar,
 lib/Java3d_171/j3dutils.jar,
 lib/Java3d_171/vecmath.jar,
 lib/jogamp/gluegen-rt.jar,
 lib/jogamp/jogl-all.jar
Bundle-NativeCode: 
 lib/jogamp/windows-i586/gluegen-rt.dll;
 lib/jogamp/windows-i586/nativewindow_awt.dll;
 lib/jogamp/windows-i586/nativewindow_win32.dll;
 lib/jogamp/windows-i586/jogl_cg.dll;
 lib/jogamp/windows-i586/jogl_desktop.dll

this MANIFEST file is in the created plugin available too.

With Bundle-ClassPath is the classpath defined and with Bundle-Nativcode is the destinnation for nativ .dll defined;
With this settings I can perform the functionality started in eclipse, works fine;
 -> the build path (for compilation) is correct, no errors
 -> the runtime execution (classpath) is correct too

I do not use gluegen-rt-natives-windows-i586.jar and jogl-all-natives-windows-i586.jar
I do not use the sources ZIP files, also no references to it
And no references to natives libraries e.g. gluegen-rt.jar has no reference to native source location

Maybe the problem is not in Java3d at all but in Eclipse or in the OSGI or I dont know.
I'm looking for an alternative posibility to build my plugin, with Command Line, Ant or MAVEN.


Reply | Threaded
Open this post in threaded view
|

Re: Java3d V1.7.1, ClassNotFoundException outside of Eclipse IDE

gouessej
Administrator
Personally, I had to use JOGL with OSGI about 12 years ago, I remember that I had to put everything into a single plugin to make it work, I couldn't put Gluegen and JOGL into separate plugins.

Wade wrote a tutorial about OSGI and JOGL, have you ever found it?

Using jogamp-far.jar isn't a discouraged practice but I have never used it with OSGI.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Java3d V1.7.1, ClassNotFoundException outside of Eclipse IDE

lermontov
The problem is solved and it was NOT Java3d!

I'll try to describe it.

We have a product, comprises of many plugins (jar files); I'm responsible just for one, with Java3d.
The first run of installed product writed down a file
configuration\org.eclipse.osgi\framework.info.1
This file contains the whole information about all paths, classpath, native libray path and much more.

And when I changed some paths in my plugin (I did this to change from Java3d_152 to Java3d_171), then built plugin, replaced plugin in the product and then run the product, the tool used paths not from new plugin but from
configuration\org.eclipse.osgi\framework.info.1
This explained my ClassDefNotFoundException;

Deletion of
framework.info.1
 before plugin replacement helped me to solve this problem;

Conclusion: OSGI-Behaviour!  
May be someone knows, how to change this behaviour e.g. with a flag, but this is a not a Java3d topic!

Thanks a lot!
Reply | Threaded
Open this post in threaded view
|

Re: Java3d V1.7.1, ClassNotFoundException outside of Eclipse IDE

gouessej
Administrator
Thank you for your feedback. Your classpath was wrong, which explains why Java3D classes weren't found.
Julien Gouesse | Personal blog | Website