OSX M1 OpenAL error JME3.5.2

No idea what is missing here… I have this on Windows and Linux and no issues with OpenAL. I have no issues on Windows period, but Linux I have another issue in a different thread. If I can get this issue fixed almost all platforms I am on run without issue.

Jul 09, 2022 12:07:54 AM com.jme3.system.JmeDesktopSystem initialize
INFO: Running on jMonkeyEngine 3.5.2-stable
 * Branch: HEAD
 * Git Hash: 8ab3d24
 * Build Date: 2022-04-21
Exception in thread "jME3 Main" java.lang.UnsatisfiedLinkError: The required native library 'openal' is not available for your OS: MacOSX_ARM64
	at com.jme3.system.NativeLibraryLoader.loadNativeLibrary(NativeLibraryLoader.java:537)
	at com.jme3.system.lwjgl.LwjglContext.loadNatives(LwjglContext.java:230)
	at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:219)
	at java.base/java.lang.Thread.run(Thread.java:833)
BUILD SUCCESSFUL (total time: 8 seconds)

Hi

Are you using lwjgl2 or lwjgl3?

After looking at all my builds on Win/Linux/OSX looks like v2.0

I am having a hard time understanding how I can get a pure v3 build of the engine so I can dump the libs and sources into NB. I tried just dumping the LWJGL3.jar into the library and removing the LWJGL.jar and that didn’t work. dump still looking for v2. Guessing the whole engine needs to be recompiled to use the LWJGL3.jar can’t just dump the file in and go…

I switched to a Maven build
I get this error now…

Oracle Corporation
18.0.1.1
Mac OS X
aarch64
12.4
/Library/Java/JavaVirtualMachines/jdk-18.0.1.1.jdk/Contents/Home
{DepthBits=24, MinHeight=0, DisableJoysticks=true, SwapBuffers=true, Resizable=false, CenterWindow=true, Height=480, BitsPerPixel=24, Width=640, UseRetinaFrameBuffer=false, UseInput=true, FrameRate=-1, Title=My Awesome Game, GammaCorrection=true, AudioRenderer=LWJGL, WindowXPosition=0, WindowYPosition=0, MinWidth=0, VSync=true, Samples=0, StencilBits=0, SettingsDialogImage=/com/jme3/app/Monkey.png, Renderer=LWJGL-OpenGL2, OpenCLPlatformChooser=com.jme3.opencl.DefaultPlatformChooser, Frequency=60, Fullscreen=false, OpenCL=false}
Jul 09, 2022 12:29:56 PM com.jme3.system.JmeDesktopSystem initialize
INFO: Running on jMonkeyEngine 3.5.2-stable
 * Branch: HEAD
 * Git Hash: 8ab3d24
 * Build Date: 2022-04-21
Exception in thread "main" java.lang.UnsatisfiedLinkError: The required native library 'bulletjme' was not found in the classpath via 'native/osx/arm64/libbulletjme.dylib'. Error message: no bulletjme in java.library.path: /Users/syntheticprime/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
	at com.jme3.system.NativeLibraryLoader.loadNativeLibrary(NativeLibraryLoader.java:589)
	at com.jme3.system.JmeDesktopSystem.initialize(JmeDesktopSystem.java:343)
	at com.jme3.system.JmeDesktopSystem.newContext(JmeDesktopSystem.java:267)
	at com.jme3.system.JmeSystem.newContext(JmeSystem.java:174)
	at com.jme3.app.LegacyApplication.start(LegacyApplication.java:488)
	at com.jme3.app.LegacyApplication.start(LegacyApplication.java:442)
	at com.jme3.app.SimpleApplication.start(SimpleApplication.java:126)
	at com.gow.jmetestmaven.JMETestMaven.main(JMETestMaven.java:80)
Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
    at org.apache.commons.exec.DefaultExecutor.executeInternal (DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute (DefaultExecutor.java:166)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:982)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:929)
    at org.codehaus.mojo.exec.ExecMojo.execute (ExecMojo.java:457)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:301)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:211)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:165)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:157)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:121)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:127)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
    at java.lang.reflect.Method.invoke (Method.java:577)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time:  4.864 s
Finished at: 2022-07-09T12:29:58-05:00
------------------------------------------------------------------------
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:exec (default-cli) on project JMETestMaven: Command execution failed.: Process exited with an error: 1 (Exit value: 1) -> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:

and here is the .pom file

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.gow.jmetestmaven</groupId>
    <artifactId>JMETestMaven</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>18</maven.compiler.source>
        <maven.compiler.target>18</maven.compiler.target>
        <jme3_g>org.jmonkeyengine</jme3_g>
        <jme3_v>3.5.2-stable</jme3_v>
        <exec.mainClass>com.gow.jmetestmaven.JMETestMaven</exec.mainClass>
    </properties>
    <repositories>
    <repository>
      <id>mvnrepository</id>
      <url>https://repo1.maven.org/maven2/</url>
    </repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>${jme3_g}</groupId>
      <artifactId>jme3-core</artifactId>
      <version>3.5.2-stable</version>
    </dependency>
    <dependency>
      <groupId>${jme3_g}</groupId>
      <artifactId>jme3-desktop</artifactId>
      <version>3.5.2-stable</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.jmonkeyengine</groupId>
        <artifactId>jme3-plugins</artifactId>
        <version>3.5.2-stable</version>
    </dependency>
    <dependency>
      <groupId>${jme3_g}</groupId>
      <artifactId>jme3-lwjgl3</artifactId>
      <version>3.5.2-stable</version>
    </dependency>
    <dependency>
        <groupId>org.jmonkeyengine</groupId>
        <artifactId>jme3-terrain</artifactId>
        <version>3.5.2-stable</version>
    </dependency>
    <dependency>
        <groupId>org.jmonkeyengine</groupId>
        <artifactId>jme3-effects</artifactId>
        <version>3.5.2-stable</version>
    </dependency>
    <dependency>
        <groupId>   org.jmonkeyengine</groupId>
        <artifactId>jme3-networking</artifactId>
        <version>3.5.2-stable</version>
    </dependency>
    <dependency>
        <groupId>org.jmonkeyengine</groupId>
        <artifactId>jme3-niftygui</artifactId>
        <version>3.5.2-stable</version>
    </dependency>
    <dependency>
        <groupId>org.jmonkeyengine</groupId>
        <artifactId>jme3-jogg</artifactId>
        <version>3.5.2-stable</version>
    </dependency>
    <dependency>
        <groupId>org.jmonkeyengine</groupId>
        <artifactId>jme3-bullet-native</artifactId>
        <version>3.2.2-stable</version>
    </dependency>
  </dependencies>
</project>

“jme3-bullet-native” does not support Arch64 Mac and is removed from the engine repo. You should use Minie library instead.

Here you can find out how to add it to your project.

Any word if / when Bullet will have support for Arch64?

Thanks for the help.

1 Like

Now I removed the bullet lib from Maven and now I get this error on building

Oracle Corporation
18.0.1.1
Mac OS X
aarch64
12.4
/Library/Java/JavaVirtualMachines/jdk-18.0.1.1.jdk/Contents/Home
{DepthBits=24, MinHeight=0, DisableJoysticks=true, SwapBuffers=true, Resizable=false, CenterWindow=true, Height=480, BitsPerPixel=24, Width=640, UseRetinaFrameBuffer=false, UseInput=true, FrameRate=-1, Title=My Awesome Game, GammaCorrection=true, AudioRenderer=LWJGL, WindowXPosition=0, WindowYPosition=0, MinWidth=0, VSync=true, Samples=0, StencilBits=0, SettingsDialogImage=/com/jme3/app/Monkey.png, Renderer=LWJGL-OpenGL2, OpenCLPlatformChooser=com.jme3.opencl.DefaultPlatformChooser, Frequency=60, Fullscreen=false, OpenCL=false}
Jul 09, 2022 1:50:16 PM com.jme3.system.JmeDesktopSystem initialize
INFO: Running on jMonkeyEngine 3.5.2-stable
 * Branch: HEAD
 * Git Hash: 8ab3d24
 * Build Date: 2022-04-21
Jul 09, 2022 1:50:16 PM com.jme3.app.LegacyApplication handleError
SEVERE: Uncaught exception thrown in Thread[jME3 Main,5,main]
java.lang.ExceptionInInitializerError
	at org.lwjgl.glfw.GLFW.glfwInit(GLFW.java:1046)
	at com.jme3.system.lwjgl.LwjglWindow.createContext(LwjglWindow.java:203)
	at com.jme3.system.lwjgl.LwjglWindow.initInThread(LwjglWindow.java:529)
	at com.jme3.system.lwjgl.LwjglWindow.run(LwjglWindow.java:662)
	at com.jme3.system.lwjgl.LwjglWindow.create(LwjglWindow.java:493)
	at com.jme3.app.LegacyApplication.start(LegacyApplication.java:490)
	at com.jme3.app.LegacyApplication.start(LegacyApplication.java:442)
	at com.jme3.app.SimpleApplication.start(SimpleApplication.java:126)
	at com.gow.jmetestmaven.JMETestMaven.main(JMETestMaven.java:80)
Caused by: java.lang.IllegalStateException: GLFW may only be used on the main thread and that thread must be the first thread in the process. Please run the JVM with -XstartOnFirstThread. This check may be disabled with Configuration.GLFW_CHECK_THREAD0.
	at org.lwjgl.glfw.EventLoop.<clinit>(EventLoop.java:30)
	... 9 more

Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
    at org.apache.commons.exec.DefaultExecutor.executeInternal (DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute (DefaultExecutor.java:166)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:982)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:929)
    at org.codehaus.mojo.exec.ExecMojo.execute (ExecMojo.java:457)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:301)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:211)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:165)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:157)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:121)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:127)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
    at java.lang.reflect.Method.invoke (Method.java:577)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
------------------------------------------------------------------------
BUILD FAILURE

I am not sure if my issue I am seeing is the same as was reported in this thread

Yep, LWJGL 3 has some short comings. If you are targeting a Mac. You might be better off with LWJGL 2. Confused? You’d better be :smiley: You lose some, you get some. You can try the JVM switch and all the magic. jME 3.5.2 I think even should have this magic fix from the newest LWJGL 3 version but as far as I know, it was never actually gotten to work…

It does. Minie, as already mentioned on the wiki page, is based on bullet physics. It is forked from “jme3-bullet” in 2018 and updated with tons of bugfix and new features and supports arch64 Mac. It is maintained by @sgold on his own GitHub repo.

1 Like

I see, so will JME at some point assimilate Minie into JME?

Thanks for the tip!

2 Likes

There are currently no plans to assimilate Minie into JME. I proposed it once, but there was little interest.

The advantages of having it as a separate project are:

  • independent release cycle
  • clarity about whose job it is to document, troubleshoot, and maintain the library

The main disadvantage is that, as a separate project, it’s not easily discovered.

1 Like

sgold, Thanks for the heads up. Good to know. I just started my project in JME and didn’t want to start off with portions of the engine that are not supported anymore.