2017-12-19 20 views
0

で見つかっていない私はMaven.HereはそれのJavaの9 Mavenのモジュールは、コンソール

public class Welcome { 

    public static void main(String[] args) { 
     System.out.println("Java 9 Modular Welcome"); 

     Module module = Welcome.class.getModule(); 
     System.out.printf("Module name: %s%n",module.getName()); 
    } 
} 

module-info.java

module org.abondar.experimental.intro { 

exports org.abondar.experimental.intro; 
} 

のMavenコンパイラプラグイン内部の単純なクラスで使用してジグソーパズルモジュールを構築しています

<plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.7.0</version> 
       <configuration> 
        <jdkToolchain> 
         <version>[1.8,9)</version> 
        </jdkToolchain> 
        <source>9</source> 
        <target>9</target> 
       </configuration> 
      </plugin> 
    </plugins> 
    </build> 

とJARプラグインの設定

<build> 
     <sourceDirectory>src/main/org.abondar.experimental.intro</sourceDirectory> 
     <plugins> 
      <plugin> 
       <!-- Build an executable JAR --> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>3.0.2</version> 
       <configuration> 
        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
          <classpathPrefix>lib/</classpathPrefix> 
          <mainClass>org.abondar.experimental.intro.Welcome</mainClass> 
         </manifest> 
         <manifestEntries> 
          <Class-Path>./lib</Class-Path> 
          <Module-Path>./mods</Module-Path> 
         </manifestEntries> 
        </archive> 
       </configuration> 
      </plugin> 

     </plugins> 
    </build> 

したがって、IDEではこのコードは期待どおりに動作します。しかし、コンソールのgetModuleはnullを返します。コンソールモジュールがモジュールパスにないので、私はMavenプラグインの1つを誤って構成していると思います。だから正確にwr

+0

を実行しているの?実際にIDEのログを調べて、どのコマンドが実行されているかを確認できたらどうしたらいいですか? – nullpointer

+0

ソースコードを 'src/main/java'に入れるだけで、' src/main/org.abondar.experimental.intro ''を使用しないでください。 'module-info.java'を' src/main/java'に追加しました.. – khmarbaise

+0

@nullpointer正しくないjava -jarを使用しました –

答えて

0

まあ、いつかと慎重に読んで私は間違いを理解した:私は正しく瓶を実行していない。だからここ

それはどのようにする必要があります:

java --module-path target/Intro-1.0.jar -m org.abondar.experimental.intro/org.abondar.experimental.intro.Welcome 

代わりにちょうどどのようなコマンドを使用すると、コンソール経由でこれを実行するために使用します

java -jar target/Intro-1.0.jar 
+0

メインクラスがMANIFESTで定義されている場合、私はここに示したスタイルで今のところ固執します。私が現在 'java -jar ...'がうまくいかない理由を見る理由は他にありません。 khmarbaiseによって既に指摘されている貧弱なフォルダの命名以外のもの。 'java -jar'が動作しなかった理由を説明できますか? – nullpointer

+0

「Java 9の早期導入と移行のための公開」: JDK 9の前に-jarオプションが存在しました。JDK 9では、モジュールパスまたはクラスパス経由でモジュールの一部として型をロードできます。タイプが でクラスパス経由でロードされている場合、タイプは名前のないモジュールと呼ばれるモジュールのメンバーになります。タイプはモジュラーJARからロードされていても、元のモジュールからのメンバーシップは です。実際には、 モジュラーJARがクラスパス上に置かれている場合、モジュール情報を無視してJAR(モジュラーJARではない)として扱われます。 クラスファイル。 –

関連する問題