# java e xvfb

## pascalbrax

Salve ragazzi.

Ho un "piccolo" problema con java (facile, direi...)

questo programma per java non è cosi tanto multi-piattaforma come di solito si dice...

in pratica questo piccolo .jar vuole usare una libreria di merda per fare della grafica, appoggiandosi a X (o a un suo surrogato).

come sistema ho un i7 dove ho installato gentoo a 64bit che avrebbe dovuto essere senza schermo, né X, né niente...

```
 $ uname -a

Linux mira 2.6.36-gentoo-r8PBX #1 SMP Wed Mar 23 23:53:34 CET 2011 x86_64 Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz GenuineIntel GNU/Linux
```

Nel contensto, si tratta di tectonicus, un programma che genera mappe in PNG di minecraft... e questo è l'errore che mi da:

```
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/minecraft/.tectonicus/native/liblwjgl.so: /home/minecraft/.tectonicus/native/liblwjgl.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)

        at java.lang.ClassLoader$NativeLibrary.load(Native Method)

        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)

        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1699)

        at java.lang.Runtime.load0(Runtime.java:770)

        at java.lang.System.load(System.java:1003)

        at org.lwjgl.Sys$1.run(Sys.java:70)

        at java.security.AccessController.doPrivileged(Native Method)

        at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)

        at org.lwjgl.Sys.loadLibrary(Sys.java:82)

        at org.lwjgl.Sys.<clinit>(Sys.java:99)

        at org.lwjgl.opengl.Display.<clinit>(Display.java:130)

        at tectonicus.rasteriser.lwjgl.LwjglRasteriser.<init>(LwjglRasteriser.java:110)

        at tectonicus.rasteriser.RasteriserFactory.createRasteriser(RasteriserFactory.java:24)

        at tectonicus.TileRenderer.<init>(TileRenderer.java:154)

        at tectonicus.TectonicusApp.run(TectonicusApp.java:651)

        at tectonicus.TectonicusApp.main(TectonicusApp.java:925)
```

questo errore sono riuscito a risolverlo impostandogli "force64bitnatives=true", in compenso l'errore insormontabile che mi da è questo:

```
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/minecraft/.tectonicus/native/liblwjgl.so: /opt/sun-jre-bin-1.6.0.24/lib/amd64/libjawt.so: symbol awt_FreeDrawingSurface, version SUNWprivate_1.1 not defined in file libmawt.so with link time reference

        at java.lang.ClassLoader$NativeLibrary.load(Native Method)

        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)

        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1699)

        at java.lang.Runtime.load0(Runtime.java:770)

        at java.lang.System.load(System.java:1003)

        at org.lwjgl.Sys$1.run(Sys.java:70)

        at java.security.AccessController.doPrivileged(Native Method)

        at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)

        at org.lwjgl.Sys.loadLibrary(Sys.java:82)

        at org.lwjgl.Sys.<clinit>(Sys.java:99)

        at org.lwjgl.opengl.Display.<clinit>(Display.java:130)

        at tectonicus.rasteriser.lwjgl.LwjglRasteriser.<init>(LwjglRasteriser.java:110)

        at tectonicus.rasteriser.RasteriserFactory.createRasteriser(RasteriserFactory.java:24)

        at tectonicus.TileRenderer.<init>(TileRenderer.java:154)

        at tectonicus.TectonicusApp.run(TectonicusApp.java:651)

        at tectonicus.TectonicusApp.main(TectonicusApp.java:925)
```

su google ho trovato gente che su altre distro tipo ubuntu riesce a farlo partire con comandi tipo Xvfb-run... cosa che su gentoo sembra non esistere... 

help!  :Smile: 

----------

## darkmanPPT

```
whereis Xvfb

Xvfb: /usr/bin/Xvfb /usr/share/man/man1/Xvfb.1.bz2

```

```
equery b /usr/bin/Xvfb

[ Searching for file(s) /usr/bin/Xvfb in *... ]

x11-base/xorg-server-1.9.4 (/usr/bin/Xvfb)
```

intendevi questo comando?

----------

## pierino_89

Io direi che hai problemi di librerie.

Facendo una supposizione, liblwjgl.so ad occhio è una libreria a 32 bit quindi quando forzi l'esecuzione a 64 non riesce a risolvere i simboli al suo interno.

Plausibilmente su ubuntu funziona perché come molte distro binarie a 64bit ha le librerie di compatibilità 32bit.

----------

## djinnZ

Xvfb non richiedeva FB_VIRTUAL=Y/M ? (lo so che sembra che un'uscita a cavolo a merenda ma dalla morte di xmove non me ne curo più)

----------

