Java 9エラー:モジュールソースパスのモジュールにありません

banan3'14:

プロジェクトの構造

Java 8で書かれたプロジェクトがあり、それをJava 9に更新したいので、クラスを2つの個別のモジュールに分けました。モジュール:

  • org.ggp.basemodule-info.javaディレクトリ内org.ggp.base/src/main/javaJava 9へのアップデートを開始する前に、そのビルドはGradleで自動化されましたpl.edu.prz.klopusz。モジュールは、モジュールに含まれる抽象クラス実装を使用します。
  • pl.edu.prz.klopuszディレクトリ内pl.edu.prz.klopusz/dolar-app/src/main/javaMavenを使用してビルドを自動化したいと思います。モジュールにはモジュールが必要org.ggp.baseです。

ファイルツリーは次のようになります。

.
├── org.ggp.base/
│   ├── build.gradle
│   └── src/
│       └── main/
│           ├── java/
│           │   ├── external/
│           │   │   └── JSON/
│           │   │       ├── JSONArray.java
│           │   │       └── JSONObject.java
│           │   ├── META-INF/
│           │   │   └── MANIFEST.MF
│           │   ├── module-info.java
│           │   └── org/
│           │       └── ggp/
│           │           └── base/
│           │               └── util/
│           │                   ├── statemachine/
│           │                   │   ├── MachineState.java
│           │                   │   └── StateMachine.java
│           │                   └── symbol/
│           └── resources/
│               └── org/
│                   └── ggp/
│                       └── base/
└── pl.edu.prz.klopusz/
    └── dolar-app/
        └── src/
            └── main/
                └── java/
                    ├── module-info.java
                    └── pl/
                        └── edu/
                            └── prz/
                                └── klopusz/
                                    └── utilities/
                                        └── decorators
                                          └──StateMachineDecorator.java

module-info.javaファイルの内容は次のとおりです。

org.ggp.base / src / main / java / module-info.java
module org.ggp.base {
    requires guava;
    requires reflections;
    requires jdk.httpserver;

    uses org.ggp.base.util.statemachine.StateMachine;

    exports org.ggp.base;
}
pl.edu.prz.klopusz /ドルアプリ/ srcに/メイン/ javaの/ module-info.java
module pl.edu.prz.klopusz {
    requires org.ggp.base;

    provides org.ggp.base.util.statemachine.StateMachine
        with pl.edu.prz.klopusz.utilities.decorators.StateMachineDecorator;
}

コンパイル

次のコマンドを使用して、プロジェクトをコンパイルしようとします。

javac -d out \
  --module-source-path org.ggp.base/src/main/java:pl.edu.prz.klopusz/dolar-app/src/main/java \
  $(find org.ggp.base/src/main/java -name *.java) \
  $(find pl.edu.prz.klopusz/dolar-app/src/main/java -name *.java)

エラー

次のエラーが発生します。

org.ggp.base / src / main / java / module-info.java:1:

エラー:モジュールソースパスにモジュールが見つかりません
module org.ggp.base {

またorg.ggp.base、パッケージ内のクラスに関するその他の99個のエラーは、それぞれ次のようになります。

org.ggp.base / src / main / java / external / JSON / JSONObject.java:1:

エラー:モジュールソースパスのモジュール内にありません
パッケージexternal.JSON;

または

org.ggp.base / src / main / java / org / ggp / base / validator / OPNFValidator.java:1:

エラー:モジュールソースパスのモジュール内にありません
パッケージorg.ggp.base.validator;

私が欲しいもの

エラーを取り除き、プロジェクトをコンパイルしたい。ディレクトリー構造を保存する必要はありませんが、2つのmodule-info.javaファイルをすべてまとめると、コンパイラーは複数のモジュールについて不平を言っていました。IntelliJ IDEAでそれを行うことができます。私は気にせず、試してみました。しかし、舞台裏で何が起こっているのか、またエラーの処理方法もわかりません(Package is empty: org.ggp.base)。

パッケージが空です:org.ggp.base

私がすでに見つけたもの

コマンドの--module-source-path切り替えに関するドキュメントを見つけるのは困難javacでした。このサイトは私が見つけものですそれは言う:

モジュールのコードをモジュールの名前が含まれるディレクトリに配置するようにモジュール内のコードを配置すると、モジュールのソースパスは次のように単純なパスのようになります。
--module-source-path Users / Me / MyProject / src
または、複数のプロジェクトにある場合は、
    --module-source-path 
        / Users / Me / MyProject / src:/ Users / Me / MyOtherProject / src

Windowsではバックスラッシュとセミコロンを使用しますが、とにかくLinuxを使用しています。

OpenJDKバグサイトの問題へのコメントもあり、私のエラーと同じですが、未解決のままだと思います。

更新

-verbose スイッチ

-verboseコマンドの最後にスイッチを追加しましたそれはコンパイラが言うことの一部です:

[parsing started SimpleFileObject[/home/sensitive/org.ggp.base/src/main/java/module-info.java]]
[parsing started SimpleFileObject[/home/sensitive/org.ggp.base/src/main/java/org/ggp/base/util/statemachine/MachineState.java]]
[parsing started SimpleFileObject[/home/sensitive/pl.edu.prz.klopusz/dolar-app/src/main/java/module-info.java]]
[parsing started SimpleFileObject[/home/sensitive/pl.edu.prz.klopusz/dolar-app/src/main/java/pl/edu/prz/klopusz/utilities/decorators/StateMachineDecorator.java]]
org.ggp.base/src/main/java/org/ggp/base/util/statemachine/MachineState.java:1: error: not in a module on the module source path
package org.ggp.base.util.statemachine;
^
[loading /modules/jdk.httpserver/module-info.class]
[loading /modules/java.base/module-info.class]
[total 263ms]
100 errors

したがって、これは--module-source-pathスイッチのパスの障害ではないと思います*src/main/java@StephanHerrmannによって指摘された場合と同じ動作が発生します)。読み取る必要があるすべてのJavaソースを読み取ります。pl.edu.prz.klopuszモジュール内のソースに問題はありませんこれらはの最初の行ですorg.ggp.base.util.statemachine.MachineState

package org.ggp.base.util.statemachine;

import org.ggp.base.util.gdl.grammar.GdlSentence;

import java.util.HashSet;
import java.util.Set;

public class MachineState {
    //...
}
ステファンヘルマン:

どおりJEP 261--module-source-path(「マルチモジュールモード」でコンパイルするための)オプションディレクトリ名、モジュール名に等しくなければならない各モジュールに含まれる、のための1つのサブディレクトリを保持するディレクトリを指していなければなりません。

ソースがモジュールディレクトリに直接含まれていないレイアウトに対応するために、このオプションは、トークンを使用して、モジュールを検索するin などのパスの任意の部分でモジュール名を表すことができるパターンをサポートしています*"./*/src/main/java/"my.mod1./my.mod1/src/main/java/module-info.java

JEP 261はどこパターン内の任意のcontraints言及していない*発生することが、どうやらjavacパターン好きではないの開始*これは意図的である場合とそうでない場合があります。

少し関連しますが、以前の議論でJEP 261に古い情報が含まれていると通知されましたが、JEPの完了後にこの仕様を維持するかどうか、どこで維持するかという私の質問には答えがありませんでした。javacのマニュアルのエントリはのようなオプションのために十分な詳細を提供する場所ではありません--module-source-path

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Gradleが機能しないJava9モジュール:エラー:モジュールが見つかりません:<モジュール名>

Java 9モジュールのテストエラー

モジュールは依存関係にありませんIntellij IDEA 2017.2.5 Java 9

Gradle Java 9モジュールが見つかりません

Kotlin + Java 9モジュール:モジュールjava.baseがモジュールグラフで見つかりません

Java9モジュールエラー:モジュール名を決定することはできません、無名のモジュールを読み込みパッケージとモジュールorg.reactivestreamsは両方からパッケージを読み込みます

Java 9モジュールでは、複数のモジュールが同じパッケージをエクスポートできますか?

クラスパスは本当にJavaモジュールにアクセスできませんか?

Java 9にモジュールjavafx.controlsが見つかりません

module-info.javaをコンパイルすると、エラーがスローされます:モジュールが見つかりません

クラスcom.bank.model.Accountをクラスjava.lang.Doubleにキャストできません(com.bank.model.Accountはローダー'app'の名前のないモジュールにあります;エラーが発生しました

モジュールからjava.baseパッケージできませんをエクスポート

Javaの9自動モジュールが見つかりません。

Java 9 リソース ファイルの異なるモジュール NoSuchFileException

Javaの9:無名のモジュール失敗したパッケージのエクスポート

Intellij:Java 11:エクスポートモジュール:パッケージが見つかりません{モジュールが見つかりません}、module-info.java

JavaでモジュールCにモジュールA及びBエクスポートパッケージsome.package 9

Javaの10、のIntelliJの警告(クラスが同じモジュールにアクセスして、エクスポートされません)

Javaの9クラスでモジュール名を取得するには?

Android Studioエラー:java:モジュール 'appcompat_v7'のJDK '<不明>'が見つかりません

Java 9モジュール記述子リファレンスはどこにありますか?

モジュールを定期Gradleのは、検索またはJavaでメインクラスのエラーをロードできませんでした/見つかりませ9+

自動モジュールは、Java 9でエクスポートされたパッケージ内の名前付きモジュールのクラスを読み取ることができますか?

java.lang.IllegalAccessError:モジュールが名前のないモジュールにエクスポートされないため、クラスにアクセスできません

Java 9 JPMS用のJMSモジュールはありますか?

java.lang.ClassCastException:クラス。$ Proxy143をクラス.MessageChannelにキャストできません(...はローダー 'app'の名前のないモジュールにあります)

どのようにInaccessibleObjectExceptionを解決するために:Javaの9の上に( "{メンバー}アクセスしやすくすることができません。モジュール{A}を{B}に '{パッケージ}を開き、' しませんか")?

どのようにInaccessibleObjectExceptionを解決するために:Javaの9の上に( "{メンバー}アクセスしやすくすることができません。モジュール{A}を{B}に '{パッケージ}を開き、' しませんか")?

なぜJava9モジュールサービスが動作していませんか?

TOP 一覧

  1. 1

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  2. 2

    Railsで宝石のレイアウトを使用するにはどうすればよいですか?

  3. 3

    Chromeウェブアプリのウェブビューの高さの問題

  4. 4

    Ansibleで複数行のシェルスクリプトを実行する方法

  5. 5

    アンドロイド9 - キーストア例外android.os.ServiceSpecificException

  6. 6

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  7. 7

    CSSのみを使用して三角形のアニメーションを作成する方法

  8. 8

    Google Playストア:アプリページにリーダーボードと実績のアイコン/バッジが表示されない

  9. 9

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  10. 10

    PyCharmリモートインタープリターはプロジェクトタブにサイトパッケージのコンテンツを表示しません

  11. 11

    Windows 7では、一部のプログラムは「ビジュアルテーマを無効にする」レジストリ設定を行いませんか?

  12. 12

    Get-ADGroupMember:このリクエストのサイズ制限を超えました

  13. 13

    Pyusb can't find a device while libusb can

  14. 14

    MySQLでJSON_LENGTHとJSON_EXTRACTを組み合わせる方法は?

  15. 15

    Postmanを使用してファイル付きの(ネストされた)jsonオブジェクトを送信する

  16. 16

    Swiftのブロックのパラメーターに関するドキュメントのマークアップ形式は何ですか?

  17. 17

    Reactでclsxを使用する方法

  18. 18

    追加後、ブートストラップマルチセレクトがテーブルで機能しない

  19. 19

    MongoDB Compass: How to select Distinct Values of a Field

  20. 20

    「埋め込みブラウザのOAuthログイン」を有効にしてコールバックURLを指定した後でも、Facebookのコールバックエラーが発生する

  21. 21

    複数行ヘッダーのJTableヘッダーテキストの折り返し(カスタムTableCellRenderer)

ホットタグ

アーカイブ