【发布时间】:2012-08-23 15:38:49
【问题描述】:
我正在尝试在 Eclipse 中将 JOGL 与 Scala 一起使用,但作为 JOGL/Scala 新手,我遇到了一些我无法确定的依赖错误。谷歌搜索并没有返回任何有用的东西。
我已经建立了一个 Java JOGL 项目 Setting_up_a_JogAmp_project_in_your_favorite_IDE.
在依赖于上述项目的Java项目中编译如下Java类
import javax.media.opengl.GLProfile;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.awt.GLCanvas;
public class Game {
public static void main(String[] args) {
GLProfile glp = GLProfile.getDefault();
GLCapabilities caps = new GLCapabilities(glp);
GLCanvas canvas = new GLCanvas(caps);
System.out.println("Hello World");
}
}
正常工作,并按预期输出Hello World。
但是,制作一个Scala项目并尝试使用JOGL项目如下
import javax.media.opengl.GLProfile;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.awt.GLCanvas;
object Game {
def main (args: Array[String]): Unit = {
val glp = GLProfile.getDefault();
val caps = new GLCapabilities(glp);
val canvas : GLCanvas = new GLCanvas(caps);
System.out.println("Hello World");
}
}
甚至无法编译,因为 Eclipse 会通知我以下错误:
加载 CapabilitiesImmutable 时出错,缺少 G:\Eclipse\workspace\JOGL\jogl-all.jar(javax/media/nativewindow/CapabilitiesImmutable.class) 所需的依赖项 'class com.jogamp.common.type.WriteCloneable' Scala JOGL 未知的 Scala 问题
加载 GLCanvas 时出错,缺少依赖项 'class com.jogamp.common.util.locks.RecursiveLock',这是 G:\Eclipse\workspace\JOGL\jogl-all.jar(javax/media/opengl/awt/ GLCanvas.class) Scala JOGL 未知的 Scala 问题
加载 GLContext 时出错,缺少依赖项 'class com.jogamp.common.util.locks.RecursiveLock',G:\Eclipse\workspace\JOGL\jogl-all.jar(javax/media/opengl/GLContext.class) 要求 Scala JOGL Unknown Scala Problem
删除与GLCapabilities 和GLCanvas 相关的行,给出
object Game {
def main (args: Array[String]): Unit = {
val glp = GLProfile.getDefault();
System.out.println("Hello World");
}
}
编译并打印Hello World。
我的问题是 - 为什么 Scala 代码不起作用,我可以做些什么来解决它?我是否在做一些我不应该做的混合 JOGL 和 Scala 代码的疯狂巫术?是不是忘记添加一些依赖了?
版本信息
Eclipse:(版本:Juno Release Build id:20120614-1722)
Eclipse 的 Scala IDE:(版本:2.1.0.nightly-2_09-201208290312-cc63a95) (提供者:scala-ide.org)
JOGL 作为 JOGAMP 的一部分发布 2.0-rc10
编辑: 好的,将gluegen-rt.jar 和jogl.jar 库添加到Scala 项目本身的构建路径中解决了这个问题(我不敢相信我没有想到先这样做......)。不过,我仍然不确定自己做错了什么。
【问题讨论】: