I play go on kgs. The client is never updated. For security reasons I wanted to put it in a container. On my ubuntu host pc I can launch the client without any problem. The java version used is :
$ java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)
He goes like this: $ java -jar cgoban.jar
https://www.gokgs.com/help/downloads.html
The client, raw jar file, can be downloaded here : http://www.gokgs.com/download.jsp
As the container shuts down after startup I modified my dockerfile to look for problems, now it looks like this:
# Alpine Linux with OpenJDK JRE
FROM openjdk:8-jre-alpine
RUN apk add --no-cache bash
RUN mkdir /app
COPY cgoban.jar /app
VOLUME [/tmp,/app]
docker build -t cgoban:latest .
docker run -ti -p 5667:5667 --name gob9 cgoban:latest
It works well.
Inside my container the java version is :
/app # java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (IcedTea 3.12.0) (Alpine 8.212.04-r0)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
I get the following error :
/app # java -jar cgoban.jar
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.igoweb.cgoban.CGoban.<init>(CGoban.java:157)
at org.igoweb.cgoban.CGoban.main(CGoban.java:62)
Caused by: java.lang.NullPointerException
at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
at sun.font.SunFontManager$2.run(SunFontManager.java:431)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.<init>(SunFontManager.java:376)
at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
at java.awt.Font.getFont2D(Font.java:491)
at java.awt.Font.access$000(Font.java:224)
at java.awt.Font$FontAccessImpl.getFont2D(Font.java:228)
at sun.font.FontUtilities.getFont2D(FontUtilities.java:180)
at sun.font.StandardGlyphVector.initFontData(StandardGlyphVector.java:1126)
at sun.font.StandardGlyphVector.init(StandardGlyphVector.java:1115)
at sun.font.StandardGlyphVector.<init>(StandardGlyphVector.java:172)
at java.awt.Font.getStringBounds(Font.java:2421)
at java.awt.Font.getStringBounds(Font.java:2331)
at com.gokgs.client.swing.KgsPlaf.createDefaultValues(KgsPlaf.java:111)
at com.gokgs.client.swing.KgsPlaf.<clinit>(KgsPlaf.java:61)
... 2 more
I don't see what I can do to make the customer work. Has anyone already done this containerisation or do you have any leads?
Thank you in advance for your help,