Как заставить JOGL на Ubuntu 11.10 работать - PullRequest
2 голосов
/ 18 октября 2011

любая помощь приветствуется.

Проблема: Ubuntu 11.10 не очень хорошо играет с Java JOGL

Краткое изложение того, что было установлено:

  • JDK ok
  • Переменные окружения ok
  • JOGL Банки и lib ok
  • Тестовый файл используется в порядке
  • Маловероятно, чтоEBKAC
  • права доступа к файлам ok
  • Проблема, вызванная 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, все работало нормально.Ява не сломана.Проверил мою пользовательскую библиотеку jogl в Eclipse, выглядит хорошо.Собственная библиотека установлена ​​правильно для всех банок.Я попытался запустить файл в терминале

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

и получил 32 ошибки с жалобами на невозможность найти пакеты.В этот момент я понял, что это НЕ проблема затмения.

Я изменил переменные окружения в / etc / environment и / etc / profile, так что запустил:

echo $ PATH

echo $ CLASSPATH

и

echo $ JAVA_HOME

все отображают ~ / librambo / jar и ~ / librambo/ lib, как они должны (плюс JDK правильно появился в PATH) (~ / librambo - это / home / rambo / librambo, rambo = username)

Я попытался поместить простой "T1.java" внутрь ~ / librambo/ jar и javac 'оттуда, та же проблема.Затем я попытался:

javac -classpath jogl.all.jar T1.java

, чтобы определить, приведет ли это к уменьшению количества ошибок, и потребовалось «чтение ошибок»jogl.all.jar; ошибка при открытии zip-файла "

После распаковки jar-файла он компилируется, но не запускается.Запустив

ldd * .so

в терминале, я обнаружил, что ему не хватает "libjawt.so", так как он жаловался на "not found".Найдя этот библиотечный файл и скопировав его в папку ~ / librambo / jar, он (ldd * .so) пожаловался на несколько других библиотечных пакетов, таких как libmawt.so, libjvm.so и т. Д. После того, как они также присоединились к ужасному пулуфайлов, собранных в ~ / librambo / jar, после ldd'ing снова жаловался, что теперь не может найти libjawt.so - но я просто «исправил» эту проблему ...

Я также "gksu nautilus" 'Я перешел к ним jar-файлы и установил их права на чтение / запись для всех пользователей и разрешил запускать их как исполняемые файлы.

Я использовал sun-java-6, поэтому в паранойе ярешил удалить другие java SDK в / usr / lib / jvm, чтобы помехи не вызывали слишком большое количество 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 / setup, выходные данные 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

ПЕРЕМЕННЫЕ ОКРУЖАЮЩЕЙ СРЕДЫ

  • ПУТЬ= "/ USR / местные / SBIN: / USR / местные / бен: / USR / SBIN: / USR / бен: / SBIN: / бен: / USR / игры: ~ / .rvm / бен: / Главная / Рэмбо / 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

ССЫЛКИ

(Сокращенный список)

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

ОБНОВЛЕНИЯ

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

ДЕНЬ 5 обновления java jogl headache

ПРОГРЕСС !!= D

Теперь только 20 ошибок, связанных с ... Android?= S

Итак, я создал новую папку / home / rambo / libme

Я скачал:

  • jogl-linux-amd64.7z 16-Sep-201113:50 7,0M
  • gluegen-linux-amd64.7z 16 сентября 2011 г. 04:53 735K

из:

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

На этот раз я распаковал файлы 7zip и увидел в каждой папке src zip.Я скопировал содержимое обоих файлов в libme, перезаписей не было - они имеют схожую структуру папок.

Затем я изменил переменные окружения, чтобы они указывали на libme.Затем я переместил T1.java в libme.Javac из T1 в libme подал следующую жалобу:

    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, а не gluegen, это дает 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

Ответы [ 2 ]

3 голосов
/ 20 октября 2011

Я исправил это!= D

Вы страдаете той же проблемой?

Симптомы

Cure

Держитесь за свои панталоны, вас ждет одна дикая ночь.

@ _ @ " Тысяча библиотек империи 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

Предполагается, что вы используете" git ", если нет, то получите его (поиск в Google, установка).Это руководство было написано для Java 1.7 (ОБНОВЛЕНИЕ: и Java 1.6), вы можете проверить свою версию Java, набрав

java -version

в терминале.Чтобы изменить версию Java по умолчанию, введите

sudo update-alternatives --config java

в терминал - он отображает версии Java, которые вы установили, на выбор.Полезные советы:

Теперь время Jogl.Создайте папку для размещения исходного кода 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

, затем перейду ~ / hera / jogl / doc / HowToBuild.html ион расскажет вам о следующих шагах, хотя прочитайте эти «как создавать заметки»:

как создавать заметки

Это примечания к руководству по JOGL, который вы только что GIT клонировали на свой компьютер по адресу ~ / hera / jogl / doc / HowToBuild.html

Опытные пользователи: важно отметить, что «source / etc /среда "недостаточно при изменении переменных среды в этом случае;Проще говоря, это означает, что вам нужно выполнить следующую команду, чтобы изменить свой PATH (и другие переменные), выйти из системы, а затем снова войти в свою Ubuntu.

gksu gedit /etc/environment

Эта команда открывает вашу средупеременные.Время истребления.Удалите все следы НИЧЕГО похожего на 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.Версия Java, которую вы используете для создания Jogl, имеет большое значение;это версия Java, которую должен использовать ваш код.Если вы хотите разрабатывать проекты (которые используют Jogl) в Java 1.6 и Java 1.7, то вам потребуются отдельные папки с отдельными сборками Jogl - например, «~ / hera /», собранный с Java 1.7, «~ / zeus /»построено с использованием Java 1.6.

Предполагая, что все в порядке и не отображаются пути java, перейдите к HowToBuild.html.Я не изменил дополнительные свойства сборки.Сделайте "муравьиную" сборку, на которую ссылается руководство.Если вы выполняете тестирование JUnit, оно занимает около 30 минут и, кажется, несколько раз останавливается и не использует процессор.Это нормально, просто оставьте это на некоторое время.

Если тест не сработает, это может быть связано с тем, что из-за неудачного выбора времени вы взяли неработающую сборку.Вы можете подождать и сделать git pull (от hera), или SHA1 вернуться на несколько нажатий.

Наконец

Предполагается, что вы используете затмение.Удалите свою старую пользовательскую библиотеку jogl, которую вы создали (если вы ее создали).Я также рекомендую начать новый проект.Следуйте инструкциям (например, https://sites.google.com/site/justinscsstuff/jogl-tutorial-1 или http://www.leolol.com/drupal/game-programming) как обычно, следующие файлы можно найти в ~ / hera / jogl / build / jar / (Если вы используете Java 1.6, выдолжен встать в ~ / hera / jogl / builf / jar / atomic)

  • jogl.all.jar
  • jogl-all-natives-amd64.jar
  • newt.event.jar

их расположение в родной библиотеке находится в "~ / hera / jogl / build / lib". Затем "gluegen-rt.jar" находится в "~ / hera / gluegen"/ build ", я установил библиотеку такой же, как и для других 3-х jar-ов ... Я подозреваю, что наличие" libgluegen-rt.so "могло бы испортить вещи, похоже, это не нужно...

Теперь ваша программа должна работать!

На этом этапе вы можете поместить переменные PATH, CLASSPATH и JAVA_HOME обратно в / etc / environment (которые были удалены для объекта ant).

1 голос
/ 19 августа 2013

Ого, вы можете избавить себя от боли, используя maven для обработки зависимостей ваших проектов.Смотрите здесь: Как заставить jogl работать с идеей intellij

...