当前位置: 首页 > 知识库问答 >
问题:

JLink:服务绑定链接许多不必要的模块

闻人锦
2023-03-14

问题:

  • Q1:你在你的环境中看到同样的行为吗?
  • Q2:这是一个bug还是一个期望的行为?
  • Q3:为什么所有这些模块都是链接的?

我的应用程序:应用程序是一个简单的服务,由接口、提供者和使用者组成,每个都打包到一个单独的模块中,称为modService、modProvider、modConsumer(详细信息如下)。

jlink --module-path "mods;%JAVA_HOME%\jmods"
    --add-modules modConsumer
    --output myRuntime

java --list-modules
java.base@9
modConsumer
modService 
jlink --module-path "mods;%JAVA_HOME%\jmods"
    --bind-services
    --add-modules modConsumer
    --output myRuntime

java --list-modules
java.base@9
java.compiler@9
java.datatransfer@9
java.desktop@9
java.logging@9
java.management@9
java.management.rmi@9
java.naming@9
java.prefs@9
java.rmi@9
java.scripting@9
java.security.jgss@9
java.security.sasl@9
java.smartcardio@9
java.xml@9
java.xml.crypto@9
jdk.accessibility@9
jdk.charsets@9
jdk.compiler@9
jdk.crypto.cryptoki@9
jdk.crypto.ec@9
jdk.crypto.mscapi@9
jdk.deploy@9
jdk.dynalink@9
jdk.internal.opt@9
jdk.jartool@9
jdk.javadoc@9
jdk.jdeps@9
jdk.jfr@9
jdk.jlink@9
jdk.localedata@9
jdk.management@9
jdk.management.cmm@9
jdk.management.jfr@9
jdk.naming.dns@9
jdk.naming.rmi@9
jdk.scripting.nashorn@9
jdk.security.auth@9
jdk.security.jgss@9
jdk.unsupported@9
jdk.zipfs@9
modConsumer
modProvider
modService

下面是Java工件:

package test.service; 

public interface HelloService { 
  public String sayHello(); 
}
package test.provider; 
import test.service; 

public class HelloProvider implements HelloService { 
  @Override public String sayHello() { return "Hello!"; }
}
package test.consumer; 
import test.service; 
import java.util.ServiceLoader; 

public class HelloConsumer { 
  public static void main(String... args) { 
    ServiceLoader.load(HelloService.class).forEach(s -> System.out.println(s.sayHello())); 
  }
}
module modService { 
  exports test.service; 
}

module modProvider { 
  requires modService; 
  provides test.service.HelloService with test.provider.HelloProvider; 
}

module modConsumer { 
  requires modService; 
  uses test.service.HelloService; 
} 

任何帮助都很感激。

暂时还没有答案

 类似资料:
  • 主要内容:Google Guice 链接绑定 完整示例,输出在链接绑定中,Guice 将类型映射到其实现。在下面的示例中,我们将 SpellChecker 接口与其实现 SpellCheckerImpl 进行了映射。 我们还可以将具体类映射到它的子类。请参阅以下示例: 在这里,我们链接了绑定。让我们在完整示例中查看结果。 Google Guice 链接绑定 完整示例 创建一个名为 GuiceTester 的 Java 类。 GuiceTester.java

  • 在链接绑定中,Guice将类型映射到其实现。 在下面的示例中,我们将SpellChecker接口与其实现SpellCheckerImpl进行了映射。 bind(SpellChecker.class).to(SpellCheckerImpl.class); 我们还可以将具体类映射到它的子类。 见下面的例子 - bind(SpellCheckerImpl.class).to(WinWordSpell

  • 问题内容: 我想编写一个脚本来测试所有链接的服务器,并返回唯一已连接的服务器(可以肯定只有一个)。 这是我当前的脚本,但是我被困在这一点上: 但是使用此查询,代码无法在第一次迭代时停止,因为它无法连接到表的第一台服务器。这是错误消息: 链接服务器“ server1”的OLE DB提供程序“ MSDASQL”返回了消息“通信链接失败; -10709连接失败(连接超时已过期)”。消息7303,级别16

  • 我需要编译一个C项目,它将使用项目中的外部库和头来进行线性规划。它包含两个部分。cpp文件。主要文件,主要农民,取决于pm。H PM. h具有主农场主调用COIN-OR函数所需的所有包含行。这是pm. h的代码: 我有一个由我的老师提供的makefile,并根据自己的需要进行了修改,但每当我试图通过运行makefile来编译项目时,我都会遇到相同的错误: 在文件包含从main-farmer.cpp

  • 问题内容: 这里有人知道如何通过使用TSQL语句确定链接服务器上运行的SQL版本吗? 我正在运行SQL2005,而链接服务器正在同时运行sql2000、2005和2008。 问题答案: select * from openquery(MyLinkedServer,’SELECT SERVERPROPERTY(‘’productversion’‘)’)