GeoGebra 5

Fórumok

Üdv!

Hogyan tudnám a GeoGebra5-öt FreeBSD alatt használni? Jelenleg csak Windows, MacOSX és Linuxra van letöltés (link). Ha a Linux-verziót letöltöm, kicsomagolom, majd ./geogebra módon futtatnám:

Catched FileNotFoundException: /home/storage/downloads/GeoGebra-Linux-Portable-5.0.80.0/geogebra/gluegen-rt-natives-freebsd-amd64.jar (No such file or directory), while addNativeJarLibsImpl(classFromJavaJar class com.jogamp.common.os.Platform, classJarURI jar:file:/home/storage/downloads/GeoGebra-Linux-Portable-5.0.80.0/geogebra/gluegen-rt.jar!/com/jogamp/common/os/Platform.class, nativeJarBaseName gluegen-rt-natives-freebsd-amd64.jar): [ file:/home/storage/downloads/GeoGebra-Linux-Portable-5.0.80.0/geogebra/gluegen-rt.jar -> file:/home/storage/downloads/GeoGebra-Linux-Portable-5.0.80.0/geogebra/ ] + gluegen-rt-natives-freebsd-amd64.jar -> slim: jar:file:/home/storage/downloads/GeoGebra-Linux-Portable-5.0.80.0/geogebra/gluegen-rt-natives-freebsd-amd64.jar!/
Exception in thread "main" java.lang.UnsatisfiedLinkError: jogamp.common.jvm.JVMUtil.initialize(Ljava/nio/ByteBuffer;)Z
        at jogamp.common.jvm.JVMUtil.initialize(Native Method)
        at jogamp.common.jvm.JVMUtil.<clinit>(JVMUtil.java:58)
        at com.jogamp.common.os.Platform$1.run(Platform.java:212)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.jogamp.common.os.Platform.<clinit>(Platform.java:179)
        at javax.media.opengl.GLProfile.<clinit>(GLProfile.java:83)
        at geogebra3D.euclidian3D.opengl.j.a(Unknown Source)
        at geogebra.GeoGebra3D.<clinit>(Unknown Source)

Gondoltam, létrehozom a keresett jar-fájlt (jar cf gluegen-rt-natives-freebsd-amd64.jar gluegen-rt.jar), majd ismét futtatva:

Catched SecurityException: no certificate for gluegen-rt.jar in /home/storage/downloads/GeoGebra-Linux-Portable-5.0.80.0/geogebra/gluegen-rt-natives-freebsd-amd64.jar, while addNativeJarLibsImpl(classFromJavaJar class com.jogamp.common.os.Platform, classJarURI jar:file:/home/storage/downloads/GeoGebra-Linux-Portable-5.0.80.0/geogebra/gluegen-rt.jar!/com/jogamp/common/os/Platform.class, nativeJarBaseName gluegen-rt-natives-freebsd-amd64.jar): [ file:/home/storage/downloads/GeoGebra-Linux-Portable-5.0.80.0/geogebra/gluegen-rt.jar -> file:/home/storage/downloads/GeoGebra-Linux-Portable-5.0.80.0/geogebra/ ] + gluegen-rt-natives-freebsd-amd64.jar -> slim: jar:file:/home/storage/downloads/GeoGebra-Linux-Portable-5.0.80.0/geogebra/gluegen-rt-natives-freebsd-amd64.jar!/
Exception in thread "main" java.lang.UnsatisfiedLinkError: jogamp.common.jvm.JVMUtil.initialize(Ljava/nio/ByteBuffer;)Z
        at jogamp.common.jvm.JVMUtil.initialize(Native Method)
        at jogamp.common.jvm.JVMUtil.<clinit>(JVMUtil.java:58)
        at com.jogamp.common.os.Platform$1.run(Platform.java:212)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.jogamp.common.os.Platform.<clinit>(Platform.java:179)
        at javax.media.opengl.GLProfile.<clinit>(GLProfile.java:83)
        at geogebra3D.euclidian3D.opengl.j.a(Unknown Source)
        at geogebra.GeoGebra3D.<clinit>(Unknown Source)

Ha esetleg egy szimlinket hozok létre (ln -s gluegen-rt-natives-{linux,freebsd}-amd64.jar):

Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/jogamp_0000/file_cache/jln3607665483568077379/jln9050504763601786448/libgluegen-rt.so: Shared object "libc.so.6" not found, required by "libgluegen-rt.so"
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1851)
        at java.lang.Runtime.load0(Runtime.java:795)
        at java.lang.System.load(System.java:1062)
        at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:530)
        at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:64)
        at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:96)
        at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:414)
        at com.jogamp.common.os.DynamicLibraryBundle$GlueJNILibLoader.loadLibrary(DynamicLibraryBundle.java:388)
        at com.jogamp.common.os.Platform$1.run(Platform.java:209)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.jogamp.common.os.Platform.<clinit>(Platform.java:179)
        at javax.media.opengl.GLProfile.<clinit>(GLProfile.java:83)
        at geogebra3D.euclidian3D.opengl.j.a(Unknown Source)
        at geogebra.GeoGebra3D.<clinit>(Unknown Source)

Gondolom, talán megoldás lehetne, ha valahogy linux-emulációval lehetne futtatni - de hogy?
Vagy esetleg bármi más ötlet?

Hozzászólások

Hint: nativ komponenst probal hasznalni, meghozza a jogl-t:
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
[..]
at javax.media.opengl.GLProfile.(GLProfile.java:83)

https://jogamp.org/jogl/doc/deployment/JOGL-DEPLOYMENT.html
alapjan a freebsd-amd64 build letezik jogl-bol.

https://jogamp.org/wiki/index.php/Jogamp_Versioning_and_Releases
alapjan az oldal aljan talalhato "Release and Archived Files" bekezdes alatt elerheted az osszes platformra jogamp buildeket (jogamp-all-platforms.7z).
Ugy tunik freebsd nativ library nincs benne. Esetleg probalj meg sajat buildet kesziteni...

freebsd-amd64 build letezik jogl-bol

Jaja, port is van belőle, fel is telepítettem (csomagból). Ez nem jó?

$ file /usr/local/lib/{libjogl*,libgluegen-rt.so}
/usr/local/lib/libjogl.so:       ELF 64-bit LSB shared object, x86-64, version 1 (FreeBSD), dynamically linked, not stripped
/usr/local/lib/libjogl_awt.so:   ELF 64-bit LSB shared object, x86-64, version 1 (FreeBSD), dynamically linked, not stripped
/usr/local/lib/libgluegen-rt.so: ELF 64-bit LSB shared object, x86-64, version 1 (FreeBSD), dynamically linked, not stripped

Amint látom, ezekben a gluegen-rt-natives-linux-*.jar fájlokban a libgluegen-rt.so a "lényeg". Ezért is kerestem, melyik csomag tartalmazza ezt a fájlt. Rá kellene bírni a geogebrát, hogy ezt próbálja használni? Ha igen, hogyan kellene rábírni? (Java-hoz gyakorlatilag egyáltalán nem értek)

Hááááát... ennél egyszerűbb és könnyebb és jobb megoldást...

# pkg install linux_base-c6
# kldload linux
$ /compat/linux/bin/sh geogebra-portable

Azaz: telepíteni kell a linux_base-c6 csomagot.
A linux modult betölteni.
A linux-emuláciüval futtatni a letöltött és kicsomagolt geogebra-portable futtatható szkriptet.

És kész, ennyi.

Regebben volt egy unix-like elnevezésű verzió, mellécsomagolt java nélkül, persze huszárvágásokkal lelőtték a verziót, majd bezárták a repót, majd elérhetetlenítették a régebbi kiadásokat. (mint ahogy majdnem minden program eléri azt a pontot az életében, hogy elkezdik broáfosítani + szarni a felhasználókra egyszerre)