2011-10-18 41 views
2

任何幫助非常感謝。如何獲得Ubuntu 11.10 JOGL工作

問題:的Ubuntu 11.10沒有踢得好看與Java的JOGL已經建立什麼

摘要:

  • JDK OK
  • 環境變量確定
  • JOGL罐和lib ok
  • 使用的測試文件好吧
  • 很不可能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 applet來檢查java是否壞掉,它工作正常。 Java不壞。 在Eclipse中檢查了我的jogl用戶庫,看起來很好。本機庫適用於所有罐子。 我試圖運行該文件在終端

cd ~/workspace/projectname/src/packagename/ 
    javac T1.java 

,並獲得32個錯誤抱怨包找不到。在這一點上,我意識到這不是一個日食問題。

我改變環境變量在/ etc/environment中和/ etc/profile文件,這樣運行:

回聲$ PATH

回聲$ CLASSPATH

echo $ JAVA_HOME

所有顯示〜/ librambo /罐和〜/ librambo/lib下,他們應該(加上JDK正確地出現在PATH) (〜/ librambo是/ home /朗博/ librambo,蘭博=用戶名)

我試着把簡單的「T1.java」放在〜/ librambo/jar和javac裏面,同樣的問題。然後我想:

的javac -classpath jogl.all.jar T1.java

,以確定它是否會減少錯誤的號碼,它聲稱「錯誤讀取jogl.all。罐;在打開ZIP文件錯誤 「

提取的jar文件後,編譯但不會運行。運行

LDD *。所以

在終端

,只見它缺乏」 libjawt 。所以」,因爲它抱怨‘找不到’。 發現庫文件,並將其複製到〜/ librambo/JAR文件夾後,它(LDD *的.so)則抱怨其他幾個庫包,如libmawt.so ,libjvm.so等等。之後他們也加入了集合在〜/ librambo/jar中的可怕文件池,在ldd'ing再次投訴它後現在不能找到libjawt.so - 但我只是'修復'那個問題...

我也「gksu鸚鵡螺」'我的方式他們的jar文件,並設置他們的權限讀/寫所有用戶,並允許它們作爲可執行文件運行。

我一直在使用sun-java-6,所以在偏執狂中,我決定刪除/ usr/lib/jvm中的其​​他java SDKs,以防止干擾太多的jar文件混淆它。同樣的問題。安裝JDK1.7.0,清除〜/ librambo/jar只留下4個jar(和T1.java),不會編譯 - 再次出現相同的32個錯誤。 (我使用「sudo update-alternatives --config java」來設置java版本,我用java -version來檢查我使用的是什麼版本,所以那不是問題= p)

這個時間下載了jogl-linux -amd64.7z新鮮,在它打開java-jogl-src.zip和複製的內容複製到/〜librambo /罐再看看我能得到它到這個文件夾中,因爲目錄結構沒有工作,100個錯誤比賽。

我搜羅了很多互聯網絡找了好幾天的答案,我想我可能最終發現它:

https://launchpad.net/ubuntu/oneiric/+source/libjogl-java/1.1.1+dak1-10

它說,在更改日誌「的修補更新設置java.library。路徑「,這符合我遇到的錯誤(在某個時刻)。不幸的是,當我下載libjogl-java_1.1.1 + dak1.orig.tar.gz,打開了它,我意識到我不知道我應該與內容做。任何人都可以告訴我該怎麼做'安裝'他們?

另外,這裏是附錄,其中包含文件的層次結構,在/ etc /環境設置,輸出32個錯誤,我已經檢查的參考列表。

////////////////////////////////////////

附錄

////////////////////////////////////////

文件層次

  • /家庭/朗博/ librambo/罐子/gluegen-rt.jar中的
  • /家庭/朗博/ librambo /罐/ jogl.all.jar
  • /家庭/朗博/ librambo /罐/ JOGL-所有本地人-Linux的amd64.jar
  • /家庭/朗博/ librambo /罐/ newt.event。jar
  • /home/rambo/librambo/jar/T1.java#和其他大量文件已被刪除,因此32個錯誤又回來了。
  • /家庭/朗博/ librambo/LIB/libgluegen-rt.so
  • /家庭/朗博/ librambo/lib中/ libjogl_desktop.so
  • /家庭/朗博/ librambo/lib中/ libjogl_mobile.so
  • /家庭/朗博/ librambo/lib中/ libnativewindow_awt.so
  • /家庭/朗博/ librambo/lib中/ libnativewindow_x11.so
  • /家庭/朗博/ librambo/lib中/ libnewt.so

個環境變量

  • PATH =「在/ usr/local/sbin中:在/ usr/local/bin目錄:/ usr/sbin目錄:在/ usr/bin中:/ sbin目錄:/ bin中:在/ usr /遊戲:〜/。 RVM /斌:/家庭/朗博/ librambo /罐:/家庭/朗博/ 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 ERRORS

[email protected]:~/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 

參考文獻

(截斷的列表)

////////////////////////////////////////

更新

////////////////////////////////////////

第5天的java jogl頭痛更新

進步! = D

現在只有20個與Android相關的錯誤?= S

於是,我開始了一個新的文件夾的/ home /朗博/ libme

我下載:

  • JOGL-Linux的amd64.7z 16月 - 2011 13:50 7.0M
  • gluegen-Linux的amd64.7z 16月-2011四點53分735K

從:

http://jogamp.org/deployment/jogamp-current/archive/jogamp-linux-amd64/

這一次,我解壓7zip文件,並在每個文件夾中看到一個src zip文件夾。我將兩者的內容複製到libme中,但沒有覆蓋 - 它們共享類似的文件夾結構。

然後我改變了環境變量指向libme。然後我將T1.java移動到libme中。 libme中的Javac給出了以下投訴:

[email protected]:~/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和不gluegen,它提供了100個錯誤。從JOAL添加源並沒有任何)

openGL的測試

[email protected]:~$ /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 

回答

3

我定了! = D

你有同樣的問題嗎?

症狀

治療

守住你的褲子,你是在一個狂野的夜晚。

@ _ @「一千圖書館,JOGL帝國,降臨在你。我們的JUnit測試,將蔽日

¬_¬「然後,我們將在樹蔭代碼「

輸入以下爲Terminal

sudo apt-get install gcc libgl1-mesa-dev libglu1-mesa-dev xorg-dev libice-dev libsm-dev libx11-dev libxext-dev libxxf86vm-dev libxinerama-dev libxrandr-dev libxrender-dev 
sudo add-apt-repository ppa:eclipse-team/debian-package 
sudo apt-get update 
sudo apt-get install ant 

假設你用‘混帳’,如果沒有的話得到它(谷歌搜索,安裝)。本指南是爲Java 1.7(UPDATE:和Java 1)編寫的。6),你可以通過輸入

java -version 

進入終端來檢查你的java版本。要更改默認的Java版本,鍵入

sudo update-alternatives --config java 

到終端 - 它會顯示你已經安裝了Java版本,以供選擇。手持指南:

現在它JOGL時間。製作一個文件夾,將源代碼轉移到您的計算機0_0上。沒有特別的原因,我會將文件夾命名爲「hera」並將其放入我的主目錄。

cd ~ 
mkdir hera 
cd hera/ 
git clone git://jogamp.org/srv/scm/gluegen.git gluegen 
git clone git://jogamp.org/srv/scm/jogl.git jogl 

然後轉到〜/赫拉/ JOGL/DOC/HowToBuild.html,它會告訴你接下來的步驟,但閱讀這些 「怎樣建設筆記」:

如何建立筆記

這些指導說明,以指導筆記JOGL,你剛剛GIT克隆到您的計算機在〜/赫拉/ JOGL/DOC/HowToBuild.html

高級用戶:在這種情況下,更改環境變量時請注意「源/ etc/environment」不足;簡單來說,這意味着您需要執行下一個命令來更改PATH(和其他變量),LOG OUT然後再登錄到您的Ubuntu。

gksu gedit /etc/environment 

該命令打開您的環境變量。 exterminatus的時間。刪除ANYTHING類似java的所有痕跡,包括SDK的路徑。需要刪除CLASSPATH和JAVA_HOME(將它們複製到其他地方,以便稍後將它們放回)。你應該有這樣的東西:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:~/.rvm/bin 

注意沒有java那裏。保存並關閉。 。註銷,登錄然後檢查它的工作:

echo $PATH 

如果你看到任何Java善良儘管註銷 - 中,然後「gksu的gedit/etc/profile文件」>,看看是否有任何「出口「引用PATH或CLASSPATH或JAVA_HOME的語句滯留在那裏。如果什麼都沒有......在家裏檢查「.bashrc」?

高級用戶:接下來的一段經歷JOGL建設。你用來構建Jogl的Java版本非常重要,它是您的代碼必須使用它的Java版本。如果你想在Java 1.6和Java 1.7中開發項目(使用Jogl),那麼你將需要單獨的文件夾和單獨的Jogl版本 - 例如用Java 1.7構建的「〜/ hera /」,「〜/ zeus /」用Java 1.6構建。

假設一切正常並且有表示沒有java路徑,繼續HowToBuild.html。我沒有更改可選的構建屬性。做「螞蟻」建立指南所指的東西。如果您執行JUnit測試,則需要大約30分鐘,並且似乎凍結了幾次而不使用任何CPU。這沒關係,只需要一段時間。

如果測試不工作,這可能是因爲你的不幸時機意味着你已經被拉斷的構建。你可以等待,從拉拉(從赫拉),或SHA1回到幾個PUSHES。

最後

假設你正在使用eclipse。刪除您製作的舊的jogl用戶庫(如果您製作了一個)。我也建議開始一個新項目。按照指南(例如https://sites.google.com/site/justinscsstuff/jogl-tutorial-1http://www.leolol.com/drupal/game-programming)爲正常,下面的罐子可以在〜/赫拉/ JOGL /中找到建立/罐/(如果你使用的是Java 1.6,你必須在〜/赫拉/ JOGL到隔距/ builf /罐/原子)

  • jogl.all.jar
  • JOGL-所有本地人,amd64.jar
  • newt.event.jar

他們的本地庫的位置是在「〜/ hera/jogl/build/lib」。然後,在「〜/ hera/gluegen/build」中找到「gluegen-rt.jar」,我將庫設置爲與其他3個罐子相同的庫...我懷疑「libgluegen-rt.so 「可能已被污染的東西了,一個似乎並不需要它...

現在你的程序運行!

此時,您可以將PATH,CLASSPATH和JAVA_HOME變量放回到/ etc/environment中(這是爲螞蟻而刪除的東西)。

+0

戴夫說,OpenGL阻止錯誤消息達到eclipse = \ 亞歷克斯從Fedora轉換到Ubuntu 11.10。他沒有任何問題=(也許是11.04 - > 11.10更新。 – xxjjnn