我正在尝试运行下面的Java 3D示例代码。我指的是3个罐子和1个dll文件夹。他们的名字如下
我还尝试将它们放在jdk和jre的bin和lib文件夹中。
我还在名为“Path”的系统环境变量中添加了j3dcore-ogl.dll文件的路径。后来,我尝试将其替换为j3dcore d3d_dll.jar文件的路径。
代码如下:-
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.GraphicsConfiguration;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.media.j3d.AmbientLight;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.swing.Timer;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3d;
import javax.vecmath.Vector3f;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class InteractiveAnimation extends Applet implements ActionListener, KeyListener {
private static final long serialVersionUID = 1L;
private Button go = new Button("Go");
private TransformGroup objTrans;
private Transform3D trans = new Transform3D();
private float height = 0.0f;
private float sign = 1.0f; // going up or down
private Timer timer;
private float xloc = 0.0f;
public BranchGroup createSceneGraph() {
// Create the root of the branch graph
BranchGroup objRoot = new BranchGroup();
objTrans = new TransformGroup();
objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objRoot.addChild(objTrans);
// Create a simple shape leaf node, add it to the scene graph.
Sphere sphere = new Sphere(0.25f);
objTrans = new TransformGroup();
objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Transform3D pos1 = new Transform3D();
pos1.setTranslation(new Vector3f(0.0f, 0.0f, 0.0f));
objTrans.setTransform(pos1);
objTrans.addChild(sphere);
objRoot.addChild(objTrans);
BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0),
100.0);
Color3f light1Color = new Color3f(1.0f, 0.0f, 0.2f);
Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);
DirectionalLight light1 = new DirectionalLight(light1Color,
light1Direction);
light1.setInfluencingBounds(bounds);
objRoot.addChild(light1);
// Set up the ambient light
Color3f ambientColor = new Color3f(1.0f, 1.0f, 1.0f);
AmbientLight ambientLightNode = new AmbientLight(ambientColor);
ambientLightNode.setInfluencingBounds(bounds);
objRoot.addChild(ambientLightNode);
return objRoot;
}
public InteractiveAnimation() {
setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse
.getPreferredConfiguration();
Canvas3D c = new Canvas3D(config);
add("Center", c);
c.addKeyListener(this);
timer = new Timer(100, this);
//timer.start();
Panel p = new Panel();
p.add(go);
add("North", p);
go.addActionListener(this);
go.addKeyListener(this);
// Create a simple scene and attach it to the virtual universe
BranchGroup scene = createSceneGraph();
SimpleUniverse u = new SimpleUniverse(c);
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(scene);
}
public void keyPressed(KeyEvent e) {
//Invoked when a key has been pressed.
if (e.getKeyChar() == 's') {
xloc = xloc + .1f;
}
if (e.getKeyChar() == 'a') {
xloc = xloc - .1f;
}
}
public void keyReleased(KeyEvent e) {
// Invoked when a key has been released.
}
public void keyTyped(KeyEvent e) {
//Invoked when a key has been typed.
}
public void actionPerformed(ActionEvent e) {
// start timer when button is pressed
if (e.getSource() == go) {
if (!timer.isRunning()) {
timer.start();
}
} else {
height += .1 * sign;
if (Math.abs(height * 2) >= 1)
sign = -1.0f * sign;
if (height < -0.4f) {
trans.setScale(new Vector3d(1.0, .8, 1.0));
} else {
trans.setScale(new Vector3d(1.0, 1.0, 1.0));
}
trans.setTranslation(new Vector3f(xloc, height, 0.0f));
objTrans.setTransform(trans);
}
}
public static void main(String[] args) {
System.out.println("Program Started");
InteractiveAnimation bb = new InteractiveAnimation();
bb.addKeyListener(bb);
MainFrame mf = new MainFrame(bb, 256, 256);
}
}
当我html" target="_blank">执行此操作时,我得到以下异常堆栈跟踪:-
在线程主java.lang.UnsatisfiedLinkError中的异常:没有J3Djava.library.path在java.lang.ClassLoader.loadLibrary(未知源)在java.lang.Runtime.loadLibrary0(未知源)在java.lang.System.loadLibrary(未知源)在javax.media.j3d.MasterControl$22.run(MasterControl.java:889)在java.security.AccessController.doPrivileged(本机方法)在javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:886)在javax.media.j3d.VirtualUniverse.(VirtualUniverse.java:229)在InteractiveAnimation。(InteractiveAnimation.java:84)在InteractiveAnimation.main(InteractiveAnimation.java:143)
运行这个程序应该怎么做?
安装 Java 3D(最新版本),而不是放置罐子。
上面的评论是完全错误的。Java 3D 1.3.1已经完全过时,在最新版本的Java 3D(1.6)中不再需要手动处理DLL。我在这里解释如何安装它。
我刚从下载了Tess4Jhttp://tess4j.sourceforge.net/并将其导入到netbeans中。我遵循这个url,我正确地遵循了每一步,但当我尝试执行时,我得到了下面的错误。 错误: 我搜索并发现人们建议更新到 Visual Visual Studio 2013 的可再发行组件包,我做了,但事实证明没有帮助,我仍然遇到同样的问题。我不知道我做错了什么,下面是我的代码。 代码:
问题内容: 我想创建一个简单的JNI层。我使用Visual Studio 2008创建了一个dll(带有DLL作为选项的Win 32 Console Application项目类型)。我在调用本地方法时收到此异常: 生成的头文件是: 实现文件是: Java文件是: 当我调用本地方法“ Hello”时,我得到执行。 我观察到的另一件事是,当我使用以下命令在命令行中进行编译时:“ cl -I” C:\
我在stackoverflow上四处寻找类似的问题,但我找到的解决方案似乎都不适合我。我在一台Linux /Ubuntu机器上。我只是在练习JNI,但我发现了这个错误: 我提供了我的 .c、.h 和 .java文件。 .java文件: .c文件: .h 文件: 我使用这些命令生成. h文件,编译/生成. so文件,然后运行: JAVACnativetest.java javah-jni nativ
我遵循这个指南: http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html 但我仍然得到这个错误: E/AndroidRuntime(916):java.lang.未满足链接错误:无法从加载器加载opencv_java248dalvik.system.P
我正在使用Sikuli脚本运行Testng,它在Eclipse ide中运行良好。在Eclipse IDE中,我使用Java1.7.0版本。 但是当我创建一个Ant脚本时,它抛出了一个异常。当我与ant-v核实时 Apache Ant version 1.7.1编译于2010年9月8日Buildfile:build.xml检测到Java版本: 1.6--- 初始化:[echo]开始。时间 构建:
每当我在emulator中打开我的应用程序时,我总是会遇到这个错误: 05-06 18:52:13.640 2861-2861/? E/AndroidRuntime﹗FATAL EXCEPTION: main Process: /system/lib, PID: 2861_UnatifiedLinkError:ctivity.java:6006PathClassLoader[DexPathList