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
。
遇到完全相同的问题,但实际上有三个选项:
使用 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" />
使用 none Oracle 编译 - none Java FX JDK 8:
不可能。编译客户端时,它将从 client/lib
文件夹中选取包含的 openjfx.jar
,该文件夹是使用 JDK 10(版本 54)构建的,并且会抛出错误,因为您正在使用 JDK8(52版).
使用 Oracle JDK 8 或使用具有 FX 支持的替代 JDK 8。
我使用 Azul Zulu 8.0 版编译成功。252.fx-zulu
开始使用不同 JDK 的简单方法是 SDKMAN!
我正在尝试从 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
。
遇到完全相同的问题,但实际上有三个选项:
使用 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" />
使用 none Oracle 编译 - none Java FX JDK 8:
不可能。编译客户端时,它将从
client/lib
文件夹中选取包含的openjfx.jar
,该文件夹是使用 JDK 10(版本 54)构建的,并且会抛出错误,因为您正在使用 JDK8(52版).使用 Oracle JDK 8 或使用具有 FX 支持的替代 JDK 8。
我使用 Azul Zulu 8.0 版编译成功。252.fx-zulu
开始使用不同 JDK 的简单方法是 SDKMAN!