は9

2017-12-09 3 views
1

私はジャクソンライブラリは9

  1. ジャクソン・コア2.8.10.jar
  2. ジャクソン注釈-2.8.0.jar
  3. の3瓶を持っています
  4. ジャクソンデータバインド-2.8.10.jar

私は成功し、コアと注釈の両方にmodule-info.javaを作成し、jdepsを使用して、名前付きmaoduleにそれらを変換します。

jdeps --generateモジュール-情報:データバインドのための

は、私は、以下のコマンドを試してみました。 --module-パス%JAVA_HOME%\ jomds; jackson.core; jackson.annotationsのexistingmods \ジャクソン-データバインド-2.8.10.jar

今、次のエラーが発生している:

Missing dependence: .\jackson.databind\module-info.java not generated 
Error: missing dependencies 
    com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonCreator  not found 
    com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonCreator$Mode not found 
    com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonFormat  not found 
    com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonFormat$Value not found 
    com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonIgnoreProperties not found 
    com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonIgnoreProperties$Value not found. 

どのようにすることができますjackson-databindのmodule-info.javaを生成しますか?

+1

[IS-が-ウェイ・ツー・アドインのMaven依存性-一方-使用-Mavenを-JLINK-プラグイン]の可能な重複( https://stackoverflow.com/questions/47103221/is-there-a-way-to-add-maven-dependencies-while-using-the-maven-jlink-plugin)?他の問題のフレームワークとしてのMavenを考慮することは、失敗の原因ではありません。 – nullpointer

答えて

6

短い答えはイエス、あなたが明示的にモジュールにライブラリを変換する必要があります、ということです。

jlinkツールは、必要なモジュールのみを持つトリミングされたバイナリイメージを提供することを目的としています。問題は自動モジュールは、すべてのJDKのモジュールを読み込むことができます(名前のモジュール別名)クラスパスへのアクセス権を持っているということです。だから何も調整されません。

This threadの状態だけでなく、この、YouTubeの動画へのリンク。

This examplecommons-lang3-3.5.jarjlinkデモ用のExplictモジュールに変換します。

編集:モジュラー瓶に、より具体的に順に、変換here is an exampleスクリプト、jackson-corejackson-annotations、およびjackson-databindレガシー瓶します。

アイデアがある:レガシージャー

    • 実行jdeps --generate-module-infoは、再コンパイルし、上からmodule-info.javaを追加し、フォルダにレガシーjarを解凍し、再ジップ

    そのトリックは、依存関係を持つモジュール式のjarは、コマンドラインパラメータとしてそれらの依存関係を必要とすることです。例えば、ここにjackson-databind(抽象やや):

    # here, jackson-core and jackson-annotations have been built 
    # jackson-databind 
    
    jdeps --module-path $ROOT_DIR/modules \ 
    --add-modules jackson.annotations,jackson.core \ 
    --generate-module-info work $JACKSON_DATABIND_JAR 
    
    javac --module-path $ROOT_DIR/modules \ 
    --add-modules jackson.annotations,jackson.core \ 
    -d $ROOT_DIR/classes module-info.java 
    
  • +0

    私の質問が更新されました。 – optional

    +1

    私はすべての3つのjarファイルを変換しGitHubのソリューションへのリンクで答えを更新しました。 –

    +0

    私はすべてのjarをmodulerにしましたが、まだjackson.databindはjdepsを使ってmodule-info.javaを作成している間にjackson.annotationモジュールを読み込んでいません。 – optional