Mirth Connect:使用哪个 java 版本从源代码编译它?

Mirth Connect: which java version to use to compile it from source?

我正在尝试从 3.9.0 标签编译来自源 https://github.com/nextgenhealthcare/connect 的欢笑连接(但之前的版本也因同样的错误而失败)

手头上我认为它需要用 java9+ 编译,因为它使用了一些 javafx 东西,错误也表明:

    [javac] Compiling 519 source files to /home/pwirth/code/connect/client/classes
    [javac] /home/pwirth/code/connect/client/src/com/mirth/connect/client/ui/Frame.java:54: error: cannot access Platform
    [javac] import javafx.application.Platform;
    [javac]                          ^
    [javac]   bad class file: /home/pwirth/code/connect/client/lib/openjfx.jar(javafx/application/Platform.class)
    [javac]     class file has wrong version 54.0, should be 52.0
    [javac]     Please remove or make sure it appears in the correct subdirectory of the classpath.

另一方面,它使用 类,自从 java 9 之后就不再可以访问了,如下所示:

    [javac]   (package com.sun.rowset is declared in module java.sql.rowset, which does not export it)
    [javac] /home/pwirth/code/connect/server/src/com/mirth/connect/server/userutil/MirthCachedRowSet.java:24: error: package com.sun.rowset is not visible
    [javac] import com.sun.rowset.CachedRowSetImpl;
    [javac]               ^
    [javac]   (package com.sun.rowset is declared in module java.sql.rowset, which does not export it)
    [javac] /home/pwirth/code/connect/server/src/com/mirth/connect/server/userutil/DatabaseConnection.java:128: error: incompatible types: MirthCachedRowSet cannot be converted to CachedRowSet
    [javac]             CachedRowSet crs = new MirthCachedRowSet();

我正在执行 ant -f mirth-build.xml,当我的 JAVA_HOME 指向 java 11 时 运行 它也使用 ant 选项打开模块,如中所述他们的 readme.md 声明 --add-modules=java.sql.rowset

我过去使用 oracle java 8 编译了 mirth 3.8,这解决了您的问题,但我在 Oracle 进行许可更改之前安装了它。

根据您的使用情况,您仍然可以从 Oracle 获取它用于开发目的。

Mirth class 可能应该修复为不直接依赖于 com.sun.rowset.CachedRowSetImpl

遇到完全相同的问题,但实际上有三个选项:

  1. 使用 Java 9+ 版本编译。在那种情况下打开 server/build.xml

    第 85 行说:

    Uncomment the following and add additional dashes in front of the arguments to allow Java 9+
    

    这样做就变成了:

    <compilerarg value="--add-modules" />
    <compilerarg value="java.sql.rowset,java.xml.ws" />
    <compilerarg value="--add-exports" />
    <compilerarg value="java.sql.rowset/com.sun.rowset=ALL-UNNAMED" />
    
  2. 使用 none Oracle 编译 - none Java FX JDK 8:

    不可能。编译客户端时,它将从 client/lib 文件夹中选取包含的 openjfx.jar,该文件夹是使用 JDK 10(版本 54)构建的,并且会抛出错误,因为您正在使用 JDK8(52版).

  3. 使用 Oracle JDK 8 或使用具有 FX 支持的替代 JDK 8。

    我使用 Azul Zulu 8.0 版编译成功。252.fx-zulu

    开始使用不同 JDK 的简单方法是 SDKMAN!