java - 如何使用 --module 关键字(不使用 --add-modules)启动在 NetBeans 中创建的模块化应用程序?
问题描述
在 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。
有没有办法通过--module
上面的示例启动在 NetBeans 中创建的应用程序,或者我需要执行一些命令来启用它?
对于我创建的测试:
服务模块:
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
我做错了什么?
解决方案
推荐阅读
- python - 在 JupyterLab 1.1.4 中看不到 Markdown
- python-3.x - 添加两个不同的时间(当我打印这个 python 代码时没有显示)
- android - Android 如何重构嵌套的 doAsync
- javascript - 建立地方流动制度的问题
- python - 熊猫根据条件选择行
- powershell - 如何使用 power shell 解析 JSON 响应?
- wso2 - WSO2 EI,Integration Studio,碳应用程序中的自定义中介
- sql - 如何从sql中删除结果查询?
- azure - 在 Azure 自动化帐户 runbook 中运行 Kubectl
- android - 如何通过 react-native 控制安卓手机的电信状态?