java3d 配置(linux gentoo )

 
 
下面一段是从官网上找到的
====================================================
To install the Java 3D API on Linux or Solaris, download the self-extracting binary file, chdir to the desired directory, and then execute it. For example, on a 32-bit Linux system:

      cd /myhome/j3d
            sh /path-to-download-files/j3d-1_5_2-linux-i586.bin
            After doing this, you will need to modify your CLASSPATH environment variable to include the full paths to j3dcore.jar, j3dutils.jar, and vecmath.jar. For example:
                  export CLASSPATH=".:/myhome/j3d/lib/ext/j3dcore.jar:/myhome/j3d/lib/ext/j3dutils.jar: /myhome/j3d/lib/ext/vecmath.jar
                  Then modify your LD_LIBRARY_PATH environment variable to contain the full path to the "lib/ARCH" directory. For example, on 32-bit Linux:

                        export LD_LIBRARY_PATH=/myhome/j3d/lib/i386


==================================================~


  我照做了,然后运行了它自带的example 结果 确是

Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/j3d/Canvas3D       


也就是路径依然不对,后来找到说把lib/ext 下的jar 拷到jdk_home/jre/ext/lib 下

把liib/ext/i386/* copy 到jdk_home/jre/ext/i386


可以,照做后果不其然,但是新的错误出现了,

如下:

========================================

Locking assertion failure.  Backtrace:
#0 /usr/lib/libxcb-xlib.so.0 [0xb0fa9887]
#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xb0fa9951]
#2 /usr/lib/libX11.so.6(_XReply+0x244) [0xb0ff0a24]
#3 /home/resource/pkg/java/install/jdk1.5.0_06/jre/lib/i386/xawt/libmawt.so [0xb1356a76]
#4 /home/resource/pkg/java/install/jdk1.5.0_06/jre/lib/i386/xawt/libmawt.so [0xb133c80a]
#5 /home/resource/pkg/java/install/jdk1.5.0_06/jre/lib/i386/xawt/libmawt.so [0xb133ca51]
#6 /home/resource/pkg/java/install/jdk1.5.0_06/jre/lib/i386/xawt/libmawt.so(Java_sun_awt_X11GraphicsEnvironment_initDisplay+0x24) [0xb133cc5c]
#7 [0xb279eb8b]
#8 [0xb2798a7b]
#9 [0xb2798a7b]
#10 [0xb2796157]
#11 /home/resource/pkg/java/install/jdk1.5.0_06/jre/lib/i386/client/libjvm.so [0xb78d4fec]
#12 /home/resource/pkg/java/install/jdk1.5.0_06/jre/lib/i386/client/libjvm.so [0xb79e21f8]
#13 /home/resource/pkg/java/install/jdk1.5.0_06/jre/lib/i386/client/libjvm.so [0xb78d4e1f]
#14 /home/resource/pkg/java/install/jdk1.5.0_06/jre/lib/i386/client/libjvm.so(JVM_DoPrivileged+0x32d) [0xb79324bd]
#15 /home/resource/pkg/java/install/jdk1.5.0_06/jre/lib/i386/libjava.so(Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2+0x3d) [0xb76d92cd]
#16 [0xb279e42b]
#17 [0xb27989a4]
#18 [0xb2796157]
#19 /home/resource/pkg/java/install/jdk1.5.0_06/jre/lib/i386/client/libjvm.so [0xb78d4fec]
java: xcb_xlib.c:82: xcb_xlib_unlock: Assertion `c->xlib.lock' failed.

==========================================                                                           据说是jdk 的bug ,具体不清楚,可以参盾以下两个链接                                                    
~                           http://linuxsir.org/bbs/archive/index.php/t-335960.html

 

 

 

                 http://planet.gentoo.org/developers/betelgeuse/2006/11/26/do_not_turn_on_the_xcb_use_flag_if_you_p_5

 

 

据第二个地址上介绍运行如下命令

sed -i 's/XINERAMA/FAKEEXTN/g' /opt/sun-jdk-1.6.0.02/jre/lib/amd64/xawt/libmawt.so 

当然因为我们的是i386 平台而非amd64 所以需要做相应的修改

进到jdk_home/jre/lib/i386/xawt/ 目录 下运行如下命令

sed -i 's/XINERAMA/FAKEEXTN/g'  libmawt.so 

然后运行例子程序我的就可以运行了,当然在此之前我试过   http://linuxsir.org/bbs/archive/index.php/t-335960.html 中提到了方法 U S E="-xcb" emerge -av1 libxcb  (gentoo linux 系统中的包管理命令) 没有作用,不知对此有没有影响

 

~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JAVA 3D开发工具包(3个版本),java3d-1_3、java3d-1_4、java3d-1_5,加一个例子。例子代码如下: import java.awt.GraphicsConfiguration; import javax.media.j3d.Alpha; import javax.media.j3d.BoundingSphere; import javax.media.j3d.BranchGroup; import javax.media.j3d.Canvas3D; import javax.media.j3d.RotationInterpolator; import javax.media.j3d.Transform3D; import javax.media.j3d.TransformGroup; import javax.swing.JApplet; import javax.vecmath.Point3d; import com.sun.j3d.utils.geometry.ColorCube; import com.sun.j3d.utils.universe.SimpleUniverse; import com.sun.j3d.utils.universe.ViewingPlatform; public class HelloUniverse extends JApplet { public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); //新建一个变形组结点,初始化它 //变形组结点指定一个单一的空间变形,通过一个Transform3D对象, //能对它的子结点定位,定向,定尺寸 TransformGroup objTrans = new TransformGroup(); //指定结点可以写入它的对象的变形信息。这样我们的行为代码就能在运行进修改它。 objTrans.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE); //根节结中加入这个变形组结点 objRoot.addChild(objTrans); //新建一个例子Shape3D结点,并把它加入到场景图表中 objTrans.addChild(new ColorCube(0.4)); Transform3D yAxis = new Transform3D(); /* * 提供转换一个时间值到一个0到1之间的alpha值的方法 * 第一个参数loopCount:运行循环次数,-1表示无限循环 * 第二个参数increasingAlphaDuration:alpha值从0到1的时间周期 */ Alpha rotationAlpha = new Alpha(-1, 4000); //新建旋转者,它将执行变形操作 RotationInterpolator rotator = new RotationInterpolator( rotationAlpha, objTrans, yAxis, 0.0f, (float) Math.PI*2.0f); //用一个中心点和半径定义一个球状范围区域。 BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); //设置旋转者的运行范围 rotator.setSchedulingBounds(bounds); //加它到根结点 objRoot.addChild(rotator); //执行优化 objRoot.compile(); return objRoot;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值