0

令人费解的是 3 周.. 所以我知道 jlink、jdeps 和 jpackage 相当好.. 但不知道 jpackage 如何在内部工作,在这种情况下是 Mac ......但我也在 Win10 和 Win 10x64 openjdk/fx 环境中得到同样的交易..我已经用尽了这个谜题中的所有(我认为)红鲱鱼。,

所以 jar 在 openjdk15 bin 目录中运行良好.. 但是当我 jpackage 并打开安装 mac 应用程序(在 pkg 安装之后).. 然后我收到有关缺少模块的投诉(好像它可能会遇到一个 xcode old jre 或在我构建的运行时或路径上的 jdk .. all openjdk 15.0.1 上到达 jdk 之前的东西。

所以它是 jpackage 在内部构建的可执行内容中所做的事情,它没有正确调用 jar(即使我不使用 jlink 和 jpackage 它只是添加模块用于 fx jmods 命中路径 mvn jdk .. 也是 openjdk15.0.1)

Exception in Application start method.  
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: javax/naming/NamingException
at com.mongodb.ConnectionString.<init>(ConnectionString.java:378)
at com.mongodb.client.MongoClients.create(MongoClients.java:61)
at org.crob.MongoConnection.getMongo(MongoConnection.java:36)
at org.crob.MongoConnection.init(MongoConnection.java:85)
at org.crob.PrimaryController.initialize(PrimaryController.java:279)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml/javafx.fxml.FXMLLoader.load(Unknown Source)
at org.crob.App.loadFXML(App.java:77)
at org.crob.App.start(App.java:28)
at 
javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(Unknown Source)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.naming.NamingException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 16 more
Exception running application org.crob.App

[处理完成]

jpackage 在评论中..

jdeps..

./jdeps --print-module-deps --ignore-missing-deps /Users/johnallen/Downloads/input/modsim-1.0-SNAPSHOT.jar
java.base,java.compiler,java.desktop,java.instrument,java .management,java.naming,java.scripting,java.security.jgss,java.security.sasl,java.sql,jdk.jfr,jdk.unsupported

当我确实构建了一个运行时..

 ./jlink --output /Users/johnallen/Downloads/jd15fx15modsimruntime-mvn-ver --module-path /Users/johnallen/Downloads/javafx-jmods-15.0.1 --add-modules javafx.controls,javafx.fxml,java.base,java.compiler,java.desktop,java.instrument,java.management,java.naming,java.scripting,java.security.jgss,java.security.sasl,java.sql,jdk.jfr,jdk.unsupported

当然作为 jdk15.0.1 文件夹中的 .jar 调用运行得很好

./Users/johnallen/downloads/jdk-15.0.1.jdk/Contents/Home/bin/java --module-path /Users/johnallen/Downloads/javafx-sdk-15.0.1/lib --add-modules= javafx.controls,javafx.fxml -jar /Users/johnallen/Downloads/input/modsim-1.0-SNAPSHOT.jar

POM
<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.crob</groupId>
<artifactId>modsim</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
    <project.build.sourceEncoding>UTF- 
 8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>15.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>15.0.1</version>
    </dependency>

    <dependency>
        <groupId>com.hedera.hashgraph</groupId>
        <artifactId>sdk</artifactId>
        <version>1.2.0</version>
    </dependency>

    <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-netty-shaded</artifactId>
        <version>1.31.1</version>
    </dependency>
    <dependency>
        <groupId>dev.morphia.morphia</groupId>
        <artifactId>morphia-core</artifactId>
        <version>2.0.2</version>
    </dependency>

    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.12.7</version>
    </dependency>

    <!--<dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>16-ea+2</version> to comment out this line!
        <version>15.0.1</version>
    </dependency>-->

    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.2.4</version>
        <type>maven-plugin</type>
    </dependency>

</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <release>11</release>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>0.0.4</version>
            <configuration>
                <mainClass>org.crob.App</mainClass>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.4</version>

            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>org.crob.App</mainClass>
                            </transformer>                                    <mainClass>org.crob.App</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
 </build>
 </project>
4

0 回答 0