kelorek
kelorek

Reputation: 6214

libgdx freetype dependency with maven archtype

I'm transitioning to maven for my libgdx project using these instructions. But my project requires freetype and I'm confused about how to add the dependency for it:

Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Unable to read file for extraction: libgdx-freetype64.so
    at com.badlogic.gdx.utils.SharedLibraryLoader.readFile(SharedLibraryLoader.java:119)
    at com.badlogic.gdx.utils.SharedLibraryLoader.loadFile(SharedLibraryLoader.java:231)
    at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:108)
    ... 7 more

Here's my desktop/pom.xml:

<dependencies>
<dependency>
    <groupId>com.autonomousgames.starcycle</groupId>
    <artifactId>starcycle-core</artifactId>
    <version>${project.version}</version>
</dependency>

<dependency>
    <groupId>com.badlogicgames.gdx</groupId>
    <artifactId>gdx</artifactId>
    <version>${gdx.version}</version>
</dependency>

<dependency>
    <groupId>com.badlogicgames.gdx</groupId>
    <artifactId>gdx-freetype-platform</artifactId>
    <version>${gdx.version}</version>
</dependency>

<dependency>
    <groupId>com.badlogicgames.gdx</groupId>
    <artifactId>gdx-freetype</artifactId>
    <version>${gdx.version}</version>
</dependency>

<dependency>
    <groupId>com.badlogicgames.gdx</groupId>
    <artifactId>gdx-backend-lwjgl</artifactId>
    <version>${gdx.version}</version>
</dependency>

<dependency>
    <groupId>com.badlogicgames.gdx</groupId>
    <artifactId>gdx-platform</artifactId>
    <version>${gdx.version}</version>
    <classifier>natives-desktop</classifier>
</dependency>

EDIT: And when I run "mvn clean install -Pdesktop" I get the following:

main:
     [java] Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.ExceptionInInitializerError
     [java]     at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
     [java] Caused by: java.lang.ExceptionInInitializerError
     [java]     at com.autonomousgames.starcycle.core.screens.SplashScreen.<init>(SplashScreen.java:20)
     [java]     at com.autonomousgames.starcycle.core.StarCycle.create(StarCycle.java:40)
     [java]     at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
     [java]     at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
     [java] Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load shared library 'libgdx-freetype64.so' for target: Linux, 64-bit
     [java]     at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:110)
     [java]     at com.badlogic.gdx.graphics.g2d.freetype.FreeType.initFreeType(FreeType.java:541)
     [java]     at com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.<init>(FreeTypeFontGenerator.java:101)
     [java]     at com.autonomousgames.starcycle.core.Texturez.<clinit>(Texturez.java:261)
     [java]     ... 4 more
     [java] Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Unable to read file for extraction: libgdx-freetype64.so
     [java]     at com.badlogic.gdx.utils.SharedLibraryLoader.readFile(SharedLibraryLoader.java:119)
     [java]     at com.badlogic.gdx.utils.SharedLibraryLoader.loadFile(SharedLibraryLoader.java:231)
     [java]     at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:108)
     [java]     ... 7 more

Upvotes: 5

Views: 2401

Answers (1)

kelorek
kelorek

Reputation: 6214

The solution was to add classifiers to any platform-specific jars, noted by the inclusion of the word platform:

<dependency>
    <groupId>com.badlogicgames.gdx</groupId>
    <artifactId>gdx-freetype-platform</artifactId>
    <version>${gdx.version}</version>
    <classifier>natives-desktop</classifier>  ### Here
</dependency>

<dependency>
    <groupId>com.badlogicgames.gdx</groupId>
    <artifactId>gdx-backend-lwjgl</artifactId>
    <version>${gdx.version}</version>
</dependency>

<dependency>
    <groupId>com.badlogicgames.gdx</groupId>
    <artifactId>gdx-platform</artifactId>
    <version>${gdx.version}</version>
    <classifier>natives-desktop</classifier>
</dependency>

Upvotes: 3

Related Questions