标签: jlink

从Mathematica调用ImageJ

从Mathematica,我希望将图像传递给ImageJ插件,并将结果从ImageJ发送到Mathematica.

JLink是一个有用的工具,但我既不熟悉也不熟悉ImageJ(很难在SO上利用现有的相关问题).你知道怎么做吗?

(我已经在我的Mac上安装了ImageJ.)

java wolfram-mathematica image-processing jlink imagej

8
推荐指数
1
解决办法
779
查看次数

JDK 9 + Mac OS + jlink?

我在Mac OS上安装了JDK 9的发行版.

jshell工作得很好,Jigsaw模块支持工作,但没有jlink:

?  java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
Run Code Online (Sandbox Code Playgroud)

这是空的:

find /System/Library/Frameworks/JavaVM.framework/Versions/Current/ -iname jlink\*
Run Code Online (Sandbox Code Playgroud)

供参考:

?  ls -l $(which java)
lrwxr-xr-x  1 root  wheel  74 Nov  7  2016 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
Run Code Online (Sandbox Code Playgroud)

java macos jlink java-platform-module-system java-9

8
推荐指数
1
解决办法
1512
查看次数

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

我面临的问题是jlink的服务绑定选项链接了许多模块,似乎没有必要.省略服务绑定选项时,不链接这些模块.

问题:

  • Q1:您是否在环境中看到了相同的行为?
  • Q2:这是一个错误还是一个理想的行为?
  • 问题3:为什么所有这些模块都链接在一起?

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

操作系统:Windows 10

Jlink 没有 --bind-services产生预期的结果:

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

java --list-modules
java.base@9
modConsumer
modService 
Run Code Online (Sandbox Code Playgroud)

当应用该--bind-services选项时,我希望另外应该链接模块modProvider.但是,看看会发生什么(三个自定义模块在最后):

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 …
Run Code Online (Sandbox Code Playgroud)

java jlink java-platform-module-system java-9

8
推荐指数
2
解决办法
626
查看次数

ModiTect和Jlink没有找到模块依赖项

我已经配置ModiTectmodule-info.java为我的所有依赖项(没有它们)生成s,这似乎正在工作; 但是当涉及到拥有它们的依赖项时,却找不到它们.对于我自己的罐子,我是module-info.java手工编写的.

当我mvn package在我的应用程序中运行它失败时:

Error: Module tech.flexpoint.dashmancommon not found, required by tech.flexpoint.dashmanserver
Run Code Online (Sandbox Code Playgroud)

命令行如下所示:

C:\Program Files\Java\jdk-10.0.1\bin\jlink --add-modules tech.flexpoint.dashmanserver --module-path C:\Users\pupeno\Documents\Dashman\code\dashmanserver\target\modules;C:\Program Files\Java\jdk-10.0.1\jmods;C:\Users\pupeno\Documents\Dashman\code\dashmanserver\target\classes --output C:\Users\pupeno\Documents\Dashman\code\dashmanserver\target\jlink-image --launcher dashmanserver=tech.flexpoint.dashmanserver
Run Code Online (Sandbox Code Playgroud)

我知道这tech.flexpoint.dashmancommon是一个模块,module-info.java因为我自己建造了它.如何让ModiTect/jlink在原始罐子中找到所有相关模块?

的构建中的 ModiTect配置如下所示:

<plugin>
    <groupId>org.moditect</groupId>
    <artifactId>moditect-maven-plugin</artifactId>
    <version>1.0.0.Beta1</version>
    <executions>
        <execution>
            <id>add-module-info-to-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>add-module-info</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/modules</outputDirectory>
                <overwriteExistingFiles>true</overwriteExistingFiles>
                <modules>
                    <module>
                        <artifact>
                            <groupId>org.bouncycastle</groupId>
                            <artifactId>bcprov-jdk15on</artifactId>
                        </artifact>
                        <moduleInfoSource>
                            module bcprov.jdk15on {
                            }
                        </moduleInfoSource>
                    </module> <!-- bcprov.jdk15on -->
                    <module>
                        <artifact>
                            <groupId>com.fasterxml.jackson.core</groupId>
                            <artifactId>jackson-core</artifactId>
                        </artifact>
                        <moduleInfoSource>
                            module com.fasterxml.jackson.core {
                            }
                        </moduleInfoSource> …
Run Code Online (Sandbox Code Playgroud)

java jlink maven moditect

8
推荐指数
1
解决办法
389
查看次数

将jlink与自动模块一起使用

具有依赖于自动模块的显式模块化项目,例如,依赖于java.activation。仍然可以使用jlink吗?

请参阅以下module-info.java:

module hello {
    requires java.activation;
}
Run Code Online (Sandbox Code Playgroud)

然后,Jlink无法添加模块:

$ jlink --module-path target/modules --add-modules hello --output target/jlink
Error: automatic module cannot be used with jlink: java.activation from file:///C:/Development/jlinkExample/target/modules/javax.activation-api-1.2.0.jar
Run Code Online (Sandbox Code Playgroud)

根据我的理解,自动模块无论如何都将包含整个类路径,所以我猜想用jlink创建运行时映像没有好处吗?另请参阅:什么是自动模块?

有没有可能解决这个问题的方法,也许为那些依赖项生成一个模块信息?

java jlink java-platform-module-system

8
推荐指数
1
解决办法
2108
查看次数

jlink选项压缩有什么作用?

jlink compress选项有什么作用?oracle文档对此并不十分详细:

Enable compression of resources:

0: No compression
1: Constant string sharing
2: ZIP
Run Code Online (Sandbox Code Playgroud)

压缩哪些资源?有什么缺点--compress=2吗?

java jlink java-9

8
推荐指数
2
解决办法
245
查看次数

未找到 Jdeps 模块 java.annotation

我正在尝试使用 jdeps 和 jlink 为 Spring Boot 微服务创建一个最小的 jre,但是当我到达使用 jdeps 部分时出现以下错误

Exception in thread "main" java.lang.module.FindException: Module java.annotation not found, required by org.apache.tomcat.embed.core
    at java.base/java.lang.module.Resolver.findFail(Resolver.java:893)
    at java.base/java.lang.module.Resolver.resolve(Resolver.java:192)
    at java.base/java.lang.module.Resolver.resolve(Resolver.java:141)
    at java.base/java.lang.module.Configuration.resolve(Configuration.java:421)
    at java.base/java.lang.module.Configuration.resolve(Configuration.java:255)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration$Builder.build(JdepsConfiguration.java:564)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.buildConfig(JdepsTask.java:603)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:557)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:533)
    at jdk.jdeps/com.sun.tools.jdeps.Main.main(Main.java:49)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过以下命令但没有效果

jdeps --ignore-missing-deps --multi-release 17 --module-path target/lib/* target/errorrr-*.jar
jdeps --multi-release 16 --module-path target/lib/* target/errorrr-*.jar
jdeps --ignore-missing-deps --multi-release 17 --class-path target/lib/* target/errorrr-*.jar
Run Code Online (Sandbox Code Playgroud)

我已经尝试过 java 版本 11、16 和 17 以及不同版本的 Spring Boot。

当我运行 mvn install 时,构建所需的所有依赖项都会由 maven-dependency-plugin 插件复制到 target/lib …

java jlink maven spring-boot jdeps

8
推荐指数
2
解决办法
2557
查看次数

如何为 JLink 启动器可执行文件设置 VM 选项

使用时jlinkbin/java会生成一个文件。此可执行文件将通过以通常方式(例如-Dsystem.property=value-Xmx1G)在命令行上指定选项来接受 VM 选项。

jlink还提供了--launcher创建可以直接运行的可执行文件的选项,而不必bin/java使用模块名称调用可执行文件。

如何使启动器可执行文件预先配置为使用我选择的 JVM 选项?

java jlink

7
推荐指数
1
解决办法
1456
查看次数

错误:自动模块不能与 jlink 一起使用:-Maven with JavaFX

我通过 Maven 存储库选择了 Apache Commons IO、JSerialComm 和 Ini4J 库。

但是当我尝试通过创建图像时mvn javafx:jlink出现以下错误:

[INFO] --- javafx-maven-plugin:0.0.2:jlink (default-cli) @ JUSBPlotter ---
[WARNING] Required filename-based automodules detected. Please don't publish this project to a public artifact repository!
Error: automatic module cannot be used with jlink: ini4j from file:///root/.m2/repository/org/ini4j/ini4j/0.5.4/ini4j-0.5.4.jar
[ERROR] Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
    at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166)
    at org.openjfx.JavaFXBaseMojo.executeCommandLine(JavaFXBaseMojo.java:447)
Run Code Online (Sandbox Code Playgroud)

我似乎与此有关:

Error: automatic module cannot be used with jlink:
Run Code Online (Sandbox Code Playgroud)

我的模块文件如下所示:

module org.openjfx.JUSBPlotter {
    requires …
Run Code Online (Sandbox Code Playgroud)

javafx jlink maven gluon java-11

7
推荐指数
1
解决办法
2704
查看次数

通过 JLink 创建的 JRE 缺少一些安全证书 (cacerts)

我使用 JLink 工具创建了一个缩小的 JRE

jlink --add-modules java.base,jdk.crypto.ec --output jre
Run Code Online (Sandbox Code Playgroud)

我创建了一个非常基本的应用程序,它连接到 https://www.example.com

当我使用 JDK 运行此应用程序时,一切正常。当我使用缩小的 JRE 运行它时,我得到以下信息:

Exception in thread "main" javax.net.ssl.SSLException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
        at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:133)
        at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:320)
        at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:263)
        at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:258)
        at java.base/sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1313)
        at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:408)
        at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567)
        at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
        at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1587)
        at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1515)
        at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527)
        at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:334)
        at URLTest.printResponseCode(URLTest.java:68)
        at URLTest.main(URLTest.java:47)
Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
        at java.base/sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:102)
        at java.base/sun.security.validator.Validator.getInstance(Validator.java:181)
        at java.base/sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:300)
        at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:176)
        at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:189) …
Run Code Online (Sandbox Code Playgroud)

java jlink java-11 corretto

7
推荐指数
1
解决办法
422
查看次数