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



我正在尝试从源代码编译mirth连接https://github.com/nextgenhealthcare/connect来自3.9.0标签(但以前的版本也因相同的错误而失败(

一方面,我认为它需要用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.

另一方面,它使用的类已经不可访问了,因为java9就像这样:

[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中所述,该readme.md声明--add-modules=java.sql.rowset

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

  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. 使用无Oracle-无Java FX JDK8:编译

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

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

    我使用Azul Zulu版本8.0.252.fx-Zulu 成功编译

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

我过去用oraclejava8编译了mirth3.8,它解决了您的问题,但在oracle进行许可更改之前,我就已经安装了它。

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

Mirth类可能应该被固定为不直接依赖于com.sun.rowset.CachedRowSetImpl

相关内容

  • 没有找到相关文章

最新更新