Как запустить модульное приложение, созданное в NetBeans, с ключевым словом --module (без использования --add-modules)? - PullRequest
0 голосов
/ 13 июня 2019

После создания модульного приложения в NetBeans 11.0 я могу запустить его с синтаксисом:

java -p MODULE_PATH --add-modules MODULES -jar App.jar

Я хочу запустить приложение с:

java -p MODULE_PATH -m module[/mainclass] or --module modulename[/mainclass]

Естьмного примеров в интернете, но с компиляцией в командной строке, а не с использованием NetBeans.

Есть ли способ запустить приложение, созданное в NetBeans, с помощью только --module примера выше, или мне нужно выполнить несколько команд, чтобы включить это?

Для созданного теста:
Сервисмодуль:

module com.test {
exports com.test.interfaces;
uses com.test.interfaces.ITest;}

Класс обслуживания:


import java.util.ArrayList;
import java.util.List;
import java.util.ServiceLoader;

public interface ITest {

  static List<ITest> getInstances() {
      ServiceLoader<ITest> services = ServiceLoader.load(ITest.class);
      List<ITest> list = new ArrayList<>();
      services.iterator().forEachRemaining(list::add);
      return list;
  }

  void print(String text);}

Модуль поставщика услуг:

module com.test.provider {
  requires com.test;
  provides com.test.interfaces.ITest with com.test.provider.impl.ITestImpl;
}

Класс поставщика услуг:

package com.test.provider.impl;

import com.test.interfaces.ITest;

public class ITestImpl implements ITest {

  @Override
  public void print(String text) {
      System.out.println("Message: " + text);
  }

}  

КлиентМодуль приложения:

module org.test {
  exports org.test.app;
  requires com.test;
  requires com.test.provider;
}

Класс клиентского приложения:

package org.test.app;

import com.test.interfaces.ITest;
import java.util.List;

public class TestServiceClient {

  public static void main(String[] args) {
      List<ITest> list = ITest.getInstances();
      for (ITest object : list) {
          object.print("Hello");
      }
  }

}  

Выше приведен пример службы, поставщика услуг и клиентского приложения, которые можно запустить с помощью следующей команды:

java -p mods --add-modules com.test,com.test.provider -jar TestServiceClient.jar

Но это не работает с:

java -p mods -m org.test/org.test.app.TestServiceClient.jar

Что я делаю не так?

...