Mirth Connect: какую java версию использовать для компиляции из исходного кода? - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь скомпилировать mirth connect из источника 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.

С другой стороны, он использует классы, которые больше не доступны, так как 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

Ответы [ 2 ]

2 голосов
/ 05 мая 2020

У меня точно такая же проблема, но на самом деле есть три варианта:

  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:

    Невозможно. При компиляции клиента он извлекает включенную openjfx.jar из папки client/lib, созданной с помощью JDK 10 (версия 54), и выдаст ошибку, поскольку вы создаете с помощью JDK8 (версия 52).

  3. Используйте Oracle JDK 8 или используйте альтернативный JDK 8 с поддержкой FX.

    Я успешно скомпилировал с использованием Azul Zulu версии 8.0.252.fx-zulu

    Простой способ начать использовать разные JDK - это SDKMAN!

1 голос
/ 04 мая 2020

Я скомпилировал mirth 3.8 в прошлом с oracle java 8, который решает ваши проблемы, но я установил его раньше, чем Oracle внес изменения в лицензирование.

В зависимости от вашего использования, вы все равно можете получить его из Oracle для целей разработки.

Этот класс Mirth, вероятно, следует исправить, чтобы он не зависел от com.sun.rowset.CachedRowSetImpl напрямую.

...