Hi, first, thanks a lot for this port of Monkey Shines :)
I could actually run the v1.0.0 but encountered issues when trying to run (on Arch Linux) the latest versions (I've tried v.1.2.0 and v.1.1.1 with the same errors).
DISCLAIMER: I'm not familiar at all with the java world; maybe this is just a rookie mistake.
I've downloaded the .zip file from the latest release; after decompressing (and renaming), I end up with the MS/ directory, as follows:
$ cd MS/data
$ java -cp Monkey\ Shines-all.jar org.erikaredmark.monkeyshines.MonkeyShines -Djava.library.path=.
Binary Location: /home/jean/Downloads/MS/data/Monkey Shines-all.jar
WARNING: Could not open configuration file. Dropping to defaults.
Reason: /home/jean/Downloads/MS/data/Monkey Shines-all.jar/logging.properties: Not a directory
File handler set up. Output is to console and 'monkeyshines.log'
Log level for system is INFO
Jan 03, 2021 11:01:57 PM org.erikaredmark.monkeyshines.logging.MonkeyShinesLog initialise
INFO: Monkey Shines Java Port Log File Initialised
At this point, I can see the main screen and interact with the buttons. When I select a level (let's say Spooky), nothing visible happens (I have the animation that I indeed clicked the level button, but that's all), and the following log is displayed:
Calculation of 100 got a gain of -10.081904349041679
Decibel offset for sound: -10.081904
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no lwjgl64 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:871)
at java.lang.System.loadLibrary(System.java:1124)
at org.lwjgl.Sys$1.run(Sys.java:72)
at java.security.AccessController.doPrivileged(Native Method)
at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
at org.lwjgl.Sys.loadLibrary(Sys.java:87)
at org.lwjgl.Sys.<clinit>(Sys.java:117)
at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
at org.newdawn.slick.AppGameContainer$1.run(AppGameContainer.java:39)
at java.security.AccessController.doPrivileged(Native Method)
at org.newdawn.slick.AppGameContainer.<clinit>(AppGameContainer.java:36)
at org.erikaredmark.monkeyshines.play.SlickMonkeyShinesStart.startMonkeyShines(SlickMonkeyShinesStart.java:45)
at org.erikaredmark.monkeyshines.menu.MainWindow$GameState$1$1.worldSelected(MainWindow.java:184)
at org.erikaredmark.monkeyshines.menu.SelectAWorld$1.actionPerformed(SelectAWorld.java:109)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
I can see that liblwjgl64.so is present in the data/ directory (my current working directory), and I expected this file to be used. I've changed -Djava.library.path=. by replacing . with the absolute path, but it did not appear to have any effect. I've seen that others encounter this problem with lwjgl but did not want to attempt to touch the java code (no reason). Another stack overflow post hinted me towards modifying the environment variable LD_LIBRARY_PATH, which I did. However, I then have a different error when selecting the level:
Calculation of 100 got a gain of -10.081904349041679
Decibel offset for sound: -10.081904
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
at org.newdawn.slick.AppGameContainer$1.run(AppGameContainer.java:39)
at java.security.AccessController.doPrivileged(Native Method)
at org.newdawn.slick.AppGameContainer.<clinit>(AppGameContainer.java:36)
at org.erikaredmark.monkeyshines.play.SlickMonkeyShinesStart.startMonkeyShines(SlickMonkeyShinesStart.java:45)
at org.erikaredmark.monkeyshines.menu.MainWindow$GameState$1$1.worldSelected(MainWindow.java:184)
at org.erikaredmark.monkeyshines.menu.SelectAWorld$1.actionPerformed(SelectAWorld.java:109)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
at org.lwjgl.opengl.LinuxDisplay.getAvailableDisplayModes(LinuxDisplay.java:951)
at org.lwjgl.opengl.LinuxDisplay.init(LinuxDisplay.java:738)
at org.lwjgl.opengl.Display.<clinit>(Display.java:138)
... 42 more
but since I felt like hacking the system, I probably deserved it.
I'll try investigate a bit on my own, but since I've very limited knowledge on java, any help would be greatly appreciated :)
For some additional context, I'm running Monkey Shines within a systemd container, which is quite an exotic setup.
I've installed the Arch Linux package jre8-openjdk, and below is my version of java:
$ java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)
Hi, first, thanks a lot for this port of Monkey Shines :)
I could actually run the v1.0.0 but encountered issues when trying to run (on Arch Linux) the latest versions (I've tried v.1.2.0 and v.1.1.1 with the same errors).
DISCLAIMER: I'm not familiar at all with the java world; maybe this is just a rookie mistake.
I've downloaded the
.zip
file from the latest release; after decompressing (and renaming), I end up with theMS/
directory, as follows:I then run the following:
At this point, I can see the main screen and interact with the buttons. When I select a level (let's say
Spooky
), nothing visible happens (I have the animation that I indeed clicked the level button, but that's all), and the following log is displayed:I can see that
liblwjgl64.so
is present in thedata/
directory (my current working directory), and I expected this file to be used. I've changed-Djava.library.path=.
by replacing.
with the absolute path, but it did not appear to have any effect. I've seen that others encounter this problem with lwjgl but did not want to attempt to touch the java code (no reason). Another stack overflow post hinted me towards modifying the environment variableLD_LIBRARY_PATH
, which I did. However, I then have a different error when selecting the level:but since I felt like hacking the system, I probably deserved it.
I'll try investigate a bit on my own, but since I've very limited knowledge on java, any help would be greatly appreciated :)
For some additional context, I'm running Monkey Shines within a systemd container, which is quite an exotic setup. I've installed the Arch Linux package jre8-openjdk, and below is my version of
java
: