我试图在Mac OS上运行一个示例JavaFX应用程序。
Build.Gradle
apply plugin: 'java'
apply plugin: 'application'
repositories {
mavenCentral()
}
dependencies {
compile "org.openjfx:javafx-base:11"
compile "org.openjfx:javafx-graphics:11"
compile "org.openjfx:javafx-controls:11"
}
compileJava {
doFirst {
println "CLASSPATH IS $classpath.asPath"
options.compilerArgs = [
'--module-path', classpath.asPath,
'--add-modules', 'javafx.graphics'
]
classpath = files()
}
}
Java类
package com.test;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;
public class HelloFX extends Application {
@Override
public void start(Stage stage) {
String javaVersion = System.getProperty("java.version");
String javafxVersion = System.getProperty("javafx.version");
Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
Scene scene = new Scene(l, 640, 480);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}
> Task :compileJava FAILED
CLASSPATH IS /Users/dragos.pruteanu/.gradle/caches/modules-2/files-2.1/org.openjfx/javafx-controls/11/58d961774262ec972bf304e16c154a8e18c2050b/javafx-controls-11.jar:/Users/dragos.pruteanu/.gradle/caches/modules-2/files-2.1/org.openjfx/javafx-graphics/11/a736dd079047ec0b72b8c4970842a5c5e0c19f2f/javafx-graphics-11.jar:/Users/dragos.pruteanu/.gradle/caches/modules-2/files-2.1/org.openjfx/javafx-base/11/9fcd3e8e3227ec97bf503f7991fad1f3b14d005/javafx-base-11.jar
error: module not found: javafx.graphics
1 error
怎么啦?由于某种原因,JavaFX库没有正确加载。可能是MacOS或openjfx的错误吗?
它之所以会失败,主要是因为您使用的从jar派生的自动模块名不是javafx.graphics
。尝试使用命令行获取详细信息,我可以看到以下内容:
jar --file=.../org/openjfx/javafx-graphics/11/javafx-graphics-11.jar --describe-module
No module descriptor found. Derived automatic module.
javafx.graphicsEmpty@11 automatic
requires java.base mandated
由于解析的模块名称与您在命令行--add-modules javafx.graphics
中指定的不同,因此您将面临所述错误。
此外,使用JavaFX11运行HelloWorld的一个注释写道:
不需要添加javafx.graphics
模块,因为它是javafx.controls
模块所必需的
在使用Gradle with JavaFX运行HelloWorld时定义的步骤将是寻找使用Gradle构建的适当步骤的更好的地方。
当它声明(编辑我的)时,需要在依赖项中指定平台,例如。
compile "org.openjfx:javafx-graphics:11:$platform"
...在解决Gradle中的传递依赖关系时不考虑分类器。因此,我们需要指定以平台为分类器的...模块
并且您可能还需要示例中使用的构建脚本来将平台/OS指定为分类器。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.gradle:osdetector-gradle-plugin:1.6.0'
}
}
apply plugin: 'application'
apply plugin: 'com.google.osdetector'
ext.platform = osdetector.os == 'osx' ? 'mac' : osdetector.os == 'windows' ? 'win' : osdetector.os
我部署了一个定义了远程EJB的全局模块,但我无法从部署的应用程序访问它们。 以下是界面: 既然默认的@Ejb找不到bean,我如何找到部署的Ejb的jndi名称?值得一提的是,jboss cli中的/subsystem=naming:jndi-view()没有打印任何关于已部署模块的信息,并且在wildfly日志中没有错误。 也许,在全局模块中定义可注入ejbs是不可能的?
问题内容: 使用JDK / 11 的早期访问版本来编译基于Java-9且使用VM参数的现有代码 解决HTTP / 2客户端孵化器模块的问题 现在以编译错误结束 找不到模块:jdk.incubator.httpclient Java版本详细信息: 问题答案: 通过HTTP客户端API的标准化,现在可以删除已孵化的API。 现在,标准API的模块名称和软件包名称将 用作- 另外,将所有依赖类路径的应用
使用lodash es,我们可以挑选如下模块:
问题内容: 真的没有办法使用CSS为渐变背景设置动画吗? 就像是: 我知道,对于Safari 5.1+和Chrome 10+,有一个新的渐变语法,但是现在,对于该项目,我必须坚持使用旧的语法。 问题答案: Webkit渐变尚不支持过渡。它已在规格中,但尚无法使用。 (ps,如果您仅执行颜色转换-您可能要签出-webkit-filters-可以进行动画处理!) 更新:渐变过渡显然可以在IE10 +中
我们正在用Adopt JDK11和IntelliJ使用Gradle开发一个JavaFX11应用程序。最后,我们需要一个用于windows的EXE文件(该应用程序仅为windows设计)。在第一次尝试中,我们也使用了gradle中的launch4J,由于以下问题,我们也可以使用BAT文件,我们可以迁移到exe文件。 所以我们的主要目标和问题是,如何才能创建一个可执行的jar文件。 我们进行了几次尝试
我正在为Java11实现一个模块,并希望使用JSR250中的注释(javax.annotation.PostConstruct和javax.annotation.PreDestroy)。 我已经更改了根据依赖项从: 对此: 这个工件此行: 因此,我尝试将其添加到我的模块信息中。java文件: 但是,我得到了一个错误的导入: 错误消息是: 我已经研究了以下相关问题,但仍无法解决我的问题: 我不能在J