Skip to content

Java 11 compatibility #4

@djechelon

Description

@djechelon

I am trying to build a Docker image of the Anychart server based on Java 11, which is LTS and better suited for security-critical scenarios unlike Java 8.

Here is my Dockerfile

FROM ubuntu AS phantomjs

RUN apt update && apt install wget -y

RUN wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
RUN tar -xjf phantomjs-2.1.1-linux-x86_64.tar.bz2

#RUN wget https://github.com/mozilla/geckodriver/releases/download/v0.30.0/geckodriver-v0.30.0-linux64.tar.gz
#RUN tar -zxf geckodriver-v0.30.0-linux64.tar.gz

#RUN wget https://chromedriver.storage.googleapis.com/94.0.4606.41/chromedriver_linux64.zip
#RUN tar -zxf chromedriver_linux64.zip

RUN wget https://static.anychart.com/cdn/export-server/export-server.jar
RUN wget https://repo1.maven.org/maven2/xerces/xercesImpl/2.12.2/xercesImpl-2.12.2.jar
RUN wget https://github.com/AnyChart/export-server/blob/master/lib/org.eclipse.wst.xml.xpath2.processor_1.1.0.jar
RUN wget https://repo1.maven.org/maven2/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar
RUN wget https://repo1.maven.org/maven2/org/glassfish/jaxb/jaxb-runtime/3.0.2/jaxb-runtime-3.0.2.jar
RUN wget https://repo1.maven.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api/3.0.1/jakarta.xml.bind-api-3.0.1.jar
#RUN wget http://www.jabylon.org/maven/org/eclipse/wst/xml/xpath2/processor/2.1.100/processor-2.1.100.jar

FROM openjdk:11-jre-slim

COPY --from=phantomjs /phantomjs-2.1.1-linux-x86_64 /usr/lib/
COPY --from=phantomjs /*.jar /app/
COPY settings.toml /app/
RUN ln -s /usr/lib/phantomjs-2.1.1-linux-x86_64 /usr/lib/phantomjs
RUN ln -s /usr/lib/phantomjs/bin/phantomjs /usr/bin/phantomjs

WORKDIR /app

CMD java -Dphantomjs.binary.path=/usr/bin/phantomjs -jar /app/export-server.jar -C /app/settings.toml

settings.toml

# can be "server" or "cmd"
mode = "server"
engine = "phantom"

[server]
port = 8081
host = "127.0.0.1"
allow-scripts-executing = true
log = "/var/log/export-server.log"

[server.sharing]
# MySQL settings
#port = 3306
#db = "shared_db"
#user = "export_server_user"
#password = "export_server_password"

[server.sharing.twitter]
# settings from twitter app settings for sharing in Twitter
#key = "key"
#secret = "secret"
#callback = "http://example.com/sharing/twitter_oauth"

The build succeeds, but I get a class error on startup

Exception in thread "main" java.lang.ExceptionInInitializerError

at java.base/java.lang.Class.forName0(Native Method)

at java.base/java.lang.Class.forName(Unknown Source)

at clojure.lang.RT.classForName(RT.java:2168)

at clojure.lang.RT.classForName(RT.java:2177)

at clojure.lang.RT.loadClassForName(RT.java:2196)

at clojure.lang.RT.load(RT.java:443)

at clojure.lang.RT.load(RT.java:419)

at clojure.core$load$fn__5677.invoke(core.clj:5893)

at clojure.core$load.invokeStatic(core.clj:5892)

at clojure.core$load.doInvoke(core.clj:5876)

at clojure.lang.RestFn.invoke(RestFn.java:408)

at clojure.core$load_one.invokeStatic(core.clj:5697)

at clojure.core$load_one.invoke(core.clj:5692)

at clojure.core$load_lib$fn__5626.invoke(core.clj:5737)

at clojure.core$load_lib.invokeStatic(core.clj:5736)

at clojure.core$load_lib.doInvoke(core.clj:5717)

at clojure.lang.RestFn.applyTo(RestFn.java:142)

at clojure.core$apply.invokeStatic(core.clj:648)

at clojure.core$load_libs.invokeStatic(core.clj:5774)

at clojure.core$load_libs.doInvoke(core.clj:5758)

at clojure.lang.RestFn.applyTo(RestFn.java:137)

at clojure.core$apply.invokeStatic(core.clj:650)

at clojure.core$use.invokeStatic(core.clj:5860)

at clojure.core$use.doInvoke(core.clj:5860)

at clojure.lang.RestFn.invoke(RestFn.java:436)

at export_server.core$loading__5569__auto____4031.invoke(core.clj:1)

at export_server.core__init.load(Unknown Source)

at export_server.core__init.<clinit>(Unknown Source)

at java.base/java.lang.Class.forName0(Native Method)

at java.base/java.lang.Class.forName(Unknown Source)

at clojure.lang.RT.classForName(RT.java:2168)

at clojure.lang.RT.classForName(RT.java:2177)

at clojure.lang.RT.loadClassForName(RT.java:2196)

at clojure.lang.RT.load(RT.java:443)

at clojure.lang.RT.load(RT.java:419)

at clojure.core$load$fn__5677.invoke(core.clj:5893)

at clojure.core$load.invokeStatic(core.clj:5892)

at clojure.core$load.doInvoke(core.clj:5876)

at clojure.lang.RestFn.invoke(RestFn.java:408)

at clojure.lang.Var.invoke(Var.java:379)

at clojure.lang.Util.loadWithClass(Util.java:250)

at export_server.core.<clinit>(Unknown Source)

Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter

at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)

at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)

at java.base/java.lang.ClassLoader.loadClass(Unknown Source)

at java.base/java.lang.Class.forName0(Native Method)

at java.base/java.lang.Class.forName(Unknown Source)

at clojure.lang.RT.classForName(RT.java:2168)

at clojure.lang.RT.classForNameNonLoading(RT.java:2181)

at org.httpkit.server$loading__5569__auto____5568.invoke(server.clj:1)

at org.httpkit.server__init.load(Unknown Source)

at org.httpkit.server__init.<clinit>(Unknown Source)

... 42 more

I tried to add as many XML jars as possible to support Java 11, in particular from this discussion. But same error.

Could you advise on running Anychart server on a newer Java version?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions