JOGL示例代码编译报错:无法访问WriteCloneable的解决方法
问题
从jogamp.org获取JOGL库并解压,未修改目录结构,编写了如下示例代码:
import com.jogamp.opengl.GL; import com.jogamp.opengl.GLAutoDrawable; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLEventListener; import com.jogamp.opengl.GLProfile; import com.jogamp.newt.event.WindowAdapter; import com.jogamp.newt.event.WindowEvent; import com.jogamp.newt.opengl.GLWindow; import com.jogamp.opengl.util.Animator; public class FirstStepNewt implements GLEventListener { public static void main(String[] args) { new FirstStepNewt(); } public FirstStepNewt() { GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GL2)); GLWindow glWindow = GLWindow.create(caps); // 编译错误位置 glWindow.setTitle("First demo (Newt)"); glWindow.setSize(300, 300); // 代码未完成部分省略 } @Override public void init(GLAutoDrawable drawable) {} @Override public void dispose(GLAutoDrawable drawable) {} @Override public void display(GLAutoDrawable drawable) {} @Override public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} }
编译时在GLWindow.create(caps)处出现错误,错误信息为cannot access WriteCloneable。已检查类路径,且在JOGL API中未找到WriteCloneable相关内容,请问该如何解决此问题?
解决方法
- 补全依赖库:WriteCloneable属于JOGL配套的
jogamp-common.jar(部分版本命名为gluegen-rt.jar),解压后的JOGL目录里一定有这个文件,必须把它加入类路径,不能只导入核心的jogl-all.jar。 - 统一库版本:确保所有JOGL相关jar包版本完全一致,混用不同版本的核心库和附属库会导致依赖类缺失。
- 修正类路径配置:编译和运行时的类路径要包含所有必要的JOGL jar文件,示例命令如下:
# Windows系统 javac -cp "jogl-all.jar;jogamp-common.jar" FirstStepNewt.java java -cp ".;jogl-all.jar;jogamp-common.jar" FirstStepNewt # Linux/macOS系统 javac -cp "jogl-all.jar:jogamp-common.jar" FirstStepNewt.java java -cp ".:jogl-all.jar:jogamp-common.jar" FirstStepNewt - IDE环境检查:如果用IDE开发,在项目结构设置里,把JOGL解压目录下的所有相关jar包(包括common/gluegen系列)都添加为项目依赖,不要遗漏。
内容的提问来源于stack exchange,提问作者Joseph me Altfeld
相关产品推荐
相关产品推荐

