【发布时间】:2011-12-10 06:19:38
【问题描述】:
非常感谢任何帮助。
问题: Ubuntu 11.10 与 Java 的 JOGL 不兼容
已确立内容的总结:
- JDK 正常
- 环境变量正常
- JOGL 罐子和库正常
- 测试文件使用正常
- 不太可能是 EBKAC
- 文件权限正常
- Ubuntu 11.10 引起的问题,(有帮助吗?)
- 可能的解决方案 - 如何安装 libjogl-java_1.1.1+dak1.orig.tar.gz ?
已建立的详细信息:
JOGL 在 Ubuntu 11.04 上运行良好。测试文件“T1.java”正确显示了一个线框立方体。 将 Ubuntu 更新到 11.10 后,在 Eclipse 中运行时,JOGL 框架总是冻结,没有显示任何 JOGL 优点。 我尝试运行一个 Java 小程序来检查 Java 是否损坏,它运行良好。 Java没有坏。 在 Eclipse 中检查了我的 jogl 用户库,看起来不错。为所有 jar 正确设置了本机库。 我尝试在终端中运行该文件
cd ~/workspace/projectname/src/packagename/
javac T1.java
并收到 32 个错误,抱怨找不到包。此时我意识到这不是日食问题。
我在 /etc/environment 和 /etc/profile 更改了环境变量,这样运行:
回显 $PATH
回显 $CLASSPATH
和
回显 $JAVA_HOME
所有显示 ~/librambo/jar 和 ~/librambo/lib 都应该(加上 JDK 正确出现在 PATH 中) (~/librambo 是 /home/rambo/librambo , rambo = 用户名)
我尝试将简单的“T1.java”放入 ~/librambo/jar 并从那里 javac 'ing 它,同样的问题。然后我尝试了:
javac -classpath jogl.all.jar T1.java
确定它是否会减少错误的数量,并声称“读取 jogl.all.jar 时出错;打开 zip 文件时出错”
解压 jar 文件后,它编译但不会运行。跑步
ldd *.so
在终端中,我看到它缺少“libjawt.so”,因为它抱怨“未找到”。 在找到该库文件并将其复制到 ~/librambo/jar 文件夹后,它 (ldd *.so) 然后抱怨其他几个库包,例如 libmawt.so、libjvm.so 等。在他们也加入了可怕的池之后聚集在 ~/librambo/jar 中的文件,再次 ldd 后它抱怨它现在找不到 libjawt.so - 但我只是“修复”了这个问题......
我还用“gksu nautilus”找到了他们的 jar 文件,并将他们的权限设置为所有用户的读/写权限,并允许他们作为可执行文件运行。
我一直在使用 sun-java-6,所以在妄想症中,我决定删除 /usr/lib/jvm 中的其他 java SDK,以防止由于太多 jar 文件而造成混淆。同样的问题。安装 JDK1.7.0,清除 ~/librambo/jar 只留下 4 个 jars(和 T1.java),不会编译 - 再次出现相同的 32 个错误。 (我使用“sudo update-alternatives --config java”来设置java版本,我使用java -version来检查我使用的是什么版本,所以这不是问题=p)
这次下载了新的 jogl-linux-amd64.7z,在其中打开了 java-jogl-src.zip 并再次将内容复制到 /~librambo/jar 看看我是否可以让它在这个文件夹中工作, 100 错误,因为目录结构不匹配。
我已经在网上搜索了很多天来寻找答案,我想我可能终于找到了:
https://launchpad.net/ubuntu/oneiric/+source/libjogl-java/1.1.1+dak1-10
它在更改日志中显示“更新补丁以设置 java.library.path”,这与我遇到的错误(在某些时候)保持一致。不幸的是,当我下载 libjogl-java_1.1.1+dak1.orig.tar.gz 并打开它时,我意识到我不知道我应该对这些内容做什么。谁能告诉我如何“安装”它们?
或者,这里是附录,其中包含文件层次结构、/etc/environment 设置、32 个错误输出以及我已经检查过的参考列表。
//////////////////////////////////////////
附录
//////////////////////////////////////////
文件层次结构
- /home/rambo/librambo/jar/gluegen-rt.jar
- /home/rambo/librambo/jar/jogl.all.jar
- /home/rambo/librambo/jar/jogl-all-natives-linux-amd64.jar
- /home/rambo/librambo/jar/newt.event.jar
- /home/rambo/librambo/jar/T1.java #和其他许多文件,已经被删除,因此32错误又回来了。
- /home/rambo/librambo/lib/libgluegen-rt.so
- /home/rambo/librambo/lib/libjogl_desktop.so
- /home/rambo/librambo/lib/libjogl_mobile.so
- /home/rambo/librambo/lib/libnativewindow_awt.so
- /home/rambo/librambo/lib/libnativewindow_x11.so
- /home/rambo/librambo/lib/libnewt.so
环境变量
- PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:~/.rvm/bin:/home /rambo/librambo/jar:/home/rambo/librambo/lib:/usr/lib/jvm/jdk1.7.0/bin:/usr/lib/jvm/jdk1.7.0/lib:/usr/lib/jvm/jdk1 .7.0/jre/lib/amd64"
- JAVA_HOME="/usr/lib/jvm/jdk1.7.0/bin:/usr/lib/jvm/jdk1.7.0/lib:/usr/lib/jvm/jdk1.7.0/jre/lib/amd64:/ home/rambo/librambo/jar:/home/rambo/librambo/lib"
- CLASSPATH="/usr/lib/jvm/jdk1.7.0/bin:/usr/lib/jvm/jdk1.7.0/lib:/usr/lib/jvm/jdk1.7.0/jre/lib/amd64:/ home/rambo/librambo/jar:/home/rambo/librambo/lib"
32 个错误
rambo@rambo-ThinkPad-SL510:~/librambo/jar$ javac T1.java
T1.java:3: package javax.media.opengl does not exist
import javax.media.opengl.*;
^
T1.java:4: package javax.media.opengl.awt does not exist
import javax.media.opengl.awt.GLCanvas;
^
T1.java:5: package com.jogamp.opengl.util does not exist
import com.jogamp.opengl.util.*;
^
T1.java:6: package javax.media.opengl.glu does not exist
import javax.media.opengl.glu.GLU;
^
T1.java:7: package com.jogamp.opengl.util.gl2 does not exist
import com.jogamp.opengl.util.gl2.GLUT;
^
T1.java:9: cannot find symbol
symbol: class GLEventListener
public class T1 extends Frame implements GLEventListener, ActionListener {
^
T1.java:17: cannot find symbol
symbol : class GLCanvas
location: class T1
private GLCanvas canvas;
^
T1.java:75: cannot find symbol
symbol : class GLAutoDrawable
location: class T1
public void display(GLAutoDrawable drawable) {
^
T1.java:81: cannot find symbol
symbol : class GLAutoDrawable
location: class T1
public void dispose(GLAutoDrawable drawable) {
^
T1.java:85: cannot find symbol
symbol : class GLAutoDrawable
location: class T1
public void init (GLAutoDrawable drawable) {
^
T1.java:92: cannot find symbol
symbol : class GLAutoDrawable
location: class T1
public void reshape (GLAutoDrawable drawable, int x, int y, int width, int height) {
^
T1.java:115: cannot find symbol
symbol : class GLU
location: class Scene
private GLU glu = new GLU();
^
T1.java:116: cannot find symbol
symbol : class GLUT
location: class Scene
private GLUT glut = new GLUT();
^
T1.java:133: cannot find symbol
symbol : class GL2
location: class Scene
public void render(GL2 gl) {
^
T1.java:145: cannot find symbol
symbol : class GL2
location: class Scene
private void drawAxes(GL2 gl) {
^
T1.java:20: cannot find symbol
symbol : variable GLProfile
location: class T1
GLProfile.initSingleton(true);
^
T1.java:29: cannot find symbol
symbol : class GLProfile
location: class T1
GLProfile glp = GLProfile.getDefault();
^
T1.java:29: cannot find symbol
symbol : variable GLProfile
location: class T1
GLProfile glp = GLProfile.getDefault();
^
T1.java:30: cannot find symbol
symbol : class GLCapabilities
location: class T1
GLCapabilities caps = new GLCapabilities(glp);
^
T1.java:30: cannot find symbol
symbol : class GLCapabilities
location: class T1
GLCapabilities caps = new GLCapabilities(glp);
^
T1.java:31: cannot find symbol
symbol : class GLCanvas
location: class T1
canvas = new GLCanvas(caps);
^
T1.java:56: cannot find symbol
symbol : class FPSAnimator
location: class T1
FPSAnimator animator = new FPSAnimator(canvas, 60);
^
T1.java:56: cannot find symbol
symbol : class FPSAnimator
location: class T1
FPSAnimator animator = new FPSAnimator(canvas, 60);
^
T1.java:76: cannot find symbol
symbol : class GL2
location: class T1
GL2 gl = drawable.getGL().getGL2();
^
T1.java:86: cannot find symbol
symbol : class GL2
location: class T1
GL2 gl = drawable.getGL().getGL2();
^
T1.java:93: cannot find symbol
symbol : class GL2
location: class T1
GL2 gl = drawable.getGL().getGL2();
^
T1.java:99: cannot find symbol
symbol : variable GL2
location: class T1
gl.glMatrixMode(GL2.GL_PROJECTION);
^
T1.java:108: cannot find symbol
symbol : variable GL2
location: class T1
gl.glMatrixMode(GL2.GL_MODELVIEW);
^
T1.java:115: cannot find symbol
symbol : class GLU
location: class Scene
private GLU glu = new GLU();
^
T1.java:116: cannot find symbol
symbol : class GLUT
location: class Scene
private GLUT glut = new GLUT();
^
T1.java:134: cannot find symbol
symbol : variable GL2
location: class Scene
gl.glClear(GL2.GL_COLOR_BUFFER_BIT);
^
T1.java:148: cannot find symbol
symbol : variable GL2
location: class Scene
gl.glBegin(GL2.GL_LINES);
^
32 errors
参考文献
(截断列表)
- http://www.leolol.com/drupal/game-programming
- Ant build classpath jar generates "error in opening zip file"
- http://forum.worldwindcentral.com/archive/index.php?t-10146.html
- (Jogamp wiki 页面,用于在 Ubuntu 64 位上安装 Jogamp)
- JOGL does not work after reinstalling ubuntu
- 我所在大学的图形讲师
- T** C*******,(匿名)Vi 挥舞着 TDDaholic
- http://www.google.com
//////////////////////////////////////////
更新
//////////////////////////////////////////
第 5 天 java jogl 头痛更新
进展!! =D
现在只有 20 个与... Android 相关的错误? =S
于是我新建了一个文件夹 /home/rambo/libme
我下载了:
- jogl-linux-amd64.7z 16-Sep-2011 13:50 7.0M
- gluegen-linux-amd64.7z 16-Sep-2011 04:53 735K
来自:
http://jogamp.org/deployment/jogamp-current/archive/jogamp-linux-amd64/
这一次,我解压了 7zip 文件,并在每个文件中看到了一个 src zip 文件夹。我将两者的内容都复制到了 libme 中,没有被覆盖——尽管它们共享相似的文件夹结构。
然后我将环境变量更改为指向 libme。然后我将 T1.java 移到 libme 中。 libme 中 T1 的 Javac 报错如下:
rambo@rambo-ThinkPad-SL510:~/libme$ javac T1.java
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:30: package android.content does not exist
import android.content.*;
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:31: package android.content.pm does not exist
import android.content.pm.*;
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:32: package android.util does not exist
import android.util.Log;
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:37: cannot find symbol
symbol : class PackageInfo
location: class jogamp.common.os.android.PackageInfoUtil
public static final PackageInfo getPackageInfo(String packageName) {
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:41: cannot find symbol
symbol : class Context
location: class jogamp.common.os.android.PackageInfoUtil
public static final PackageInfo getPackageInfo(Context ctx, String packageName) {
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:41: cannot find symbol
symbol : class PackageInfo
location: class jogamp.common.os.android.PackageInfoUtil
public static final PackageInfo getPackageInfo(Context ctx, String packageName) {
^
/home/rambo/libme/jogamp/common/os/android/StaticContext.java:30: package android.content does not exist
import android.content.*;
^
/home/rambo/libme/jogamp/common/os/android/StaticContext.java:31: package android.util does not exist
import android.util.Log;
^
/home/rambo/libme/jogamp/common/os/android/StaticContext.java:34: cannot find symbol
symbol : class Context
location: class jogamp.common.os.android.StaticContext
private static Context context = null;
^
/home/rambo/libme/jogamp/common/os/android/StaticContext.java:37: cannot find symbol
symbol : class Context
location: class jogamp.common.os.android.StaticContext
public static final synchronized void setContext(Context ctx) {
^
/home/rambo/libme/jogamp/common/os/android/StaticContext.java:41: cannot find symbol
symbol : class Context
location: class jogamp.common.os.android.StaticContext
public static final synchronized Context getContext() {
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:44: cannot find symbol
symbol : class PackageInfo
location: class jogamp.common.os.android.PackageInfoUtil
final PackageInfo pi = ctx.getPackageManager().getPackageInfo(packageName, PackageManager.GET_META_DATA);
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:44: cannot find symbol
symbol : variable PackageManager
location: class jogamp.common.os.android.PackageInfoUtil
final PackageInfo pi = ctx.getPackageManager().getPackageInfo(packageName, PackageManager.GET_META_DATA);
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:45: cannot find symbol
symbol : variable Log
location: class jogamp.common.os.android.PackageInfoUtil
if(DEBUG) Log.d(MD.TAG, "getPackageInfo("+packageName+"): "+pi);
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:47: cannot find symbol
symbol : variable Log
location: class jogamp.common.os.android.PackageInfoUtil
} catch (Exception e) { if(DEBUG) { Log.d(MD.TAG, "getPackageInfo("+packageName+")", e); } }
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:49: cannot find symbol
symbol : variable Log
location: class jogamp.common.os.android.PackageInfoUtil
if(DEBUG) Log.d(MD.TAG, "getPackageInfo("+packageName+"): NULL");
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:54: cannot find symbol
symbol : class PackageInfo
location: class jogamp.common.os.android.PackageInfoUtil
final PackageInfo pInfo = getPackageInfo(packageName);
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:58: cannot find symbol
symbol : class PackageInfo
location: class jogamp.common.os.android.PackageInfoUtil
final PackageInfo pInfo = getPackageInfo(packageName);
^
/home/rambo/libme/jogamp/common/os/android/PackageInfoUtil.java:60: cannot find symbol
symbol : variable Log
location: class jogamp.common.os.android.PackageInfoUtil
if(DEBUG) Log.d(MD.TAG, "getPackageInfoVersionName("+packageName+"): "+s);
^
/home/rambo/libme/jogamp/common/os/android/StaticContext.java:38: cannot find symbol
symbol : variable Log
location: class jogamp.common.os.android.StaticContext
if(DEBUG) Log.d(MD.TAG, "setContext("+ctx+")");
^
Note: /home/rambo/libme/javax/media/opengl/awt/GLCanvas.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
20 errors
删除 android 文件夹没有帮助。 (如果我只使用 jogl src 而不是 glenegen,它会给出 100 个错误。从 joal 添加源也无济于事)
openGL 测试
rambo@rambo-ThinkPad-SL510:~$ /usr/lib/nux/unity_support_test -p
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: ATI Mobility Radeon HD 4500 Series
OpenGL version string: 3.3.11005 Compatibility Profile Context
Not software rendered: yes
Not blacklisted: yes
GLX fbconfig: yes
GLX texture from pixmap: yes
GL npot or rect textures: yes
GL vertex program: yes
GL fragment program: yes
GL vertex buffer object: yes
GL framebuffer object: yes
GL version is 1.4+: yes
Unity 3D supported: yes
【问题讨论】:
标签: java jogl ubuntu-10.10