2017-10-14 9 views
4

私はjava 9 jigsaw tutorialを終了しました。 Iクラスを実行するのに苦労されている、Javaはブートレイヤーの初期化中にJavaが実行されない理由 - モジュールモッズが見つかりません。

java --module-path mods -m mods/com.test/com.test.HelloWorld 
Error occurred during initialization of boot layer 
java.lang.module.FindException: Module mods not found 

エラー - 以下のスローあるJavacが

javac -d mods --module-source-path src $(find src -name '*.java') 

をコマンド - 私は

$ java -version 
java version "9" 
Java(TM) SE Runtime Environment (build 9+181) 
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode) 

バージョン - マック、Javaを使用しています私は何も足りませんか?

答えて

5

削除、追加改造したもの

へクラスファイルの宛先ディレクトリを設定します。あなたのケースで

クラスがパッケージの一部である場合

modsフォルダは、その後、javacは、パッケージ名を反映し、 が必要に応じてディレクトリを作成します サブディレクトリにクラスファイルを置きます。

そのため、コマンドを実行した後に改造ディレクトリを見てみることができ、すべてのための.class*.java)は、そのパッケージ名の通り対応するディレクトリ構造内に存在することになります。


その後javaツールオプション--module-path module pathまたはあなたの次のコマンドで指定された-p module path:セミコロン区切りのディレクトリの

検索(;) ディレクトリのリスト。各ディレクトリはモジュールのディレクトリです。

表示されているディレクトリがmodsであることを前提としています。


あなたのコマンドに --module modulename[/mainclass]または -m module[/mainclass]続く

初期モジュールを解決するために指定し、モジュールで指定されていない場合は、メインクラスの名前を実行します。

あなたの場合、モジュール名はcom.testで、メインクラスはcom.test.HelloWorldです。


したがって、コマンドの完全な正しい構文をしなければならない: -

java --module-path mods -m  com.test/com.test.HelloWorld 
       ^   ^  ^
      module directory module name main class 
3

-mフラグは、実行するモジュール名とメインクラスを受け入れます。

java --module-path mods -m com.test/com.test.HelloWorld 

--module-path modsが伝えjavacom.testを見つけるために検索する:モジュール名は、したがって、あるべきクラスを実行するコマンドcom.testです。

java --module-path mods -m com.test/com.test.HelloWorld 
3

は、あなたが最初にあなたが-d directoryを使用して確実に何

javac -d mods --module-source-path src $(find src -name '*.java') 

AS-javacコマンドを使用してコードをコンパイル名 - モジュールから

関連する問題