假设我有一些lib.jar我没有源代码的库(或者它是用一些不熟悉模块的非Java语言编写的).lib.jar没有module-info.class,我不想将它用作自动模块,所以我想注入module-info.class它.
我首先module-info.java使用以下命令生成:
jdeps --generate-module-info . lib.jar
Run Code Online (Sandbox Code Playgroud)
假设这产生了类似的东西:
module lib {
exports package1;
exports package2;
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试编译它但javac失败因为包package1而且package2不存在:
> javac module-info.java
module-info.java:4: error: package is empty or does not exist: package1
Run Code Online (Sandbox Code Playgroud)
当然,我可以在其中创建目录package1和package2虚拟类,但是有更好的方法吗?
我按照https://blog.jetbrains.com/idea/2013/03/packaging-javafx-2-applications-in-intellij-idea-121/中的步骤进行操作
但是当我尝试构建工件时,就像在最后一步一样,我得到了这个错误
错误:Java FX Packager:无法构建工件 - fx:deploy在此JDK中不可用
我知道JavaFX已经从java11中删除了我的问题是我应该怎么做才能构建一个.jar或.exe
这是一个快速测试的hello world应用程序.
我的应用程序使用Java Fx Web来显示html页面,问题是只有当我直接运行.jar时才会出现此错误,因为当我从我的ide(eclipse)运行它时它运行没有问题。有谁知道这是关于什么的吗?我正在使用 AdoptOpenJdk11。我也在同事的电脑上测试过,也是不行。
Graphics Device initialization failed for : d3d, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:244)
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:261)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
at javafx.embed.swing.JFXPanel.initFx(JFXPanel.java:241)
at javafx.embed.swing.JFXPanel.<init>(JFXPanel.java:257)
at com.rubicon.game.client.window.main.menu.GameMenuPanel.<init>(GameMenuPanel.java:62)
at com.rubicon.game.client.network.states.LobbyConnectionState.enable(LobbyConnectionState.java:12)
at com.rubicon.game.client.ClientApplication.loadComponents(ClientApplication.java:115)
at com.rubicon.game.client.ClientApplication.lambda$initializate$0(ClientApplication.java:98)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
at com.rubicon.game.client.network.NetworkConnection.lambda$login$0(NetworkConnection.java:124)
at com.rubicon.game.core.network.packets.PacketResponse.lambda$whenComplete$0(PacketResponse.java:30)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
at com.rubicon.game.core.network.packets.PacketResponse.complete(PacketResponse.java:24)
at com.rubicon.game.core.network.packets.request.PacketRequestLogin.onClientReceive(PacketRequestLogin.java:43)
at com.rubicon.game.client.network.callback.PacketCallbackRequester.onReceive(PacketCallbackRequester.java:33)
at com.rubicon.game.client.network.NetworkConnection.execute(NetworkConnection.java:94)
at java.base/java.lang.Thread.run(Thread.java:834) …Run Code Online (Sandbox Code Playgroud) 前面只是一个小小的背景:几年来我一直在使用Eclipse开发小型Java/JavaFX应用程序(用于室内使用或与朋友和家人共享)和Java 8,它非常好用且流畅.我完全错过了Java 9-11,所以我想我现在可以尝试一下.事实证明,现在处理事物的方式发生了很大的变化(模块化结构和所有这些),我得说我有点不知所措.
我的意思是,安装已经包含JavaFX的Java 8 JDK,启动Eclipse,获取JavaFX的插件并立即开始编码并不困难.现在使用Java 11,似乎我必须做很多我以前从未处理过的事情,所以它看起来似乎并不容易.JavaFX运行时现在是一个单独的东西,你可以手动把它,或使用Maven,或使用Gradle.从来没有做过这些事情,所以我只是浏览了一下互联网,以便开始使用Maven.在我以某种方式工作后,我的应用程序将无法运行Eclipse,直到我发现我必须为JavaFX运行时提供JVM参数.另外安装e(fx)clipse插件只是以某种方式破坏了我的IDE.
接下来就是简单地导出我的应用程序,这在以前从来就不是问题,因为系统没有找到任何JavaFX运行时或其他任何东西,因此不再真正起作用.然后我找到了一些关于应用程序部署的内容,哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇 为什么它现在必须如此复杂,或者我只是遗漏了什么?如果最终用户必须手动设置JavaFX运行时以使其工作而不是仅安装JRE,那么我应该如何分发这些应用程序?没有意义,所以我想我完全错过了一些东西.
最后一个问题:在"好日子"中使用JavaFX 11设置开发是否有"快速简便"的方法?因为现在我只是想坚持使用Java 8而忘记了所有的大惊小怪,但我还是想保持最新状态,所以...
java ×4
java-11 ×3
javafx-11 ×3
eclipse ×2
javafx ×2
java-9 ×1
java-module ×1
java-platform-module-system ×1
maven ×1
module-info ×1
openjfx ×1