我正在迁移到OpenJDK11和OpenJFX11。我已经成功地从源代码构建了这两个代码,并且根据OpenJFX,wiki使用--with-import-modules=[path_to_modular_sdk]arg构建了JDK。一切都很顺利,直到我尝试在Apache Netbeans 9中构建一个简单的“Hello World”测试项目;此时,我得到以下错误:“在active JDK中没有找到JavaFX部署库”。试图搜索这方面的信息,但找不到任何相关的东西。如果有人能解释是什么导致了这一点,我将非常感谢。谢谢你的帮助。帕特里克。
正如@mipa指出的,您不需要构建Java11或JavaFX11来迁移现有的项目。
至于Apache NetBeans9.0,当前用于JavaFX项目的ant构建文件还不支持JavaFX11。它总是在寻找JavaFX jar,当找不到它时,它就会停止。这是旧时代(Java8之前)遗留下来的,当时JavaFX不是JDK的一部分,您必须手动添加jar。
例如,当您试图创建一个新的JavaFX项目时,您将得到以下错误:
export PATH_TO_FX=/path/to/javafx-sdk-11/lib
javac --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX.java
java --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloFX extends Application {
@Override
public void start(Stage stage) {
String version = System.getProperty("java.version");
Label l = new Label ("Hello, JavaFX 11, running on " + version);
Scene scene = new Scene(new StackPane(l), 300, 200);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}
在添加代码之前,让我们将JavaFX库添加到模块路径中。
这个库只是我本地下载的JavaFX:/users/
下的文件夹。当然,如果您自己构建了它,您可以指向那个位置。
现在我可以定义模块:
module javafx11 {
requires javafx.controls;
exports javafx11;
}
如果模块化项目可以工作,那么普通的Java项目也可以在NetBeans9.0上工作。
创建一个Java项目(同样,不是JavaFX项目),将JavaFX库添加到上面的模块路径中,现在您需要添加以下用于编译和运行的VM选项:
--module-path=/path/to/javafx-sdk-11/lib --add-modules=javafx.controls
这个项目应该运行良好。
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11-ea+23</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>11-ea+23</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<release>11</release>
</configuration>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>6.1.1</version>
<!-- Use newer version of ASM -->
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>javafx11.HelloFX</mainClass>
</configuration>
</plugin>
</plugins>
</build>
对于Gradle,如果包含NetBeans的Gradle插件,也可以做到这一点。
我正在使用InteliJ,我已经浏览了所有其他似乎对其他人都有效的解决方案。我得到了一个错误: 然后,我在运行配置中向VM添加了以下选项: 这似乎部分解决了问题?但是,当我尝试运行它时,我没有得到完整的错误堆栈跟踪,我得到以下三行:
我正在使用InteliJ,我已经经历了所有其他似乎对其他人都有效的解决方案。我遇到了一个错误: 然后,我在运行配置中将以下选项添加到VM选项中: 这似乎部分解决了问题?然而,当我试图运行它时,我没有得到一大堆错误的痕迹,我得到了这三行: 当我只在VM选项中输入以下内容时,我得到了相同的错误: 这是我的运行选项的图片(我已经勾选和取消勾选了“包含依赖项和G提供的范围”框,这两个选项都不起作用。 图书
问题内容: 我正在尝试进入JAX-RS。我的项目jdk设置为1.7.03。JAX-RS(javax.ws.rs)的注释必须定义吗?如果没有,我在哪里可以找到它们? 问题答案: 这些类( JSR 311:JAX-RS:RESTful Web服务的JavaTM API )不属于JDK。您需要在CLASSPATH中包含适当的JAR文件。您可以在maven仓库中找到该API 。 还检查了Apache的CX
我刚刚升级到Android Studio0.2.8,当我尝试编辑运行配置时,出现了一个错误,上面写着“找不到默认活动”。 请让我知道我能做些什么来解决这个问题。
我正在用SDK 28创建一个新的android项目,当项目完成创建时,我在MainActivity中出现了一个错误。 我尝试了一些方法: 清洁项目 清理Android Studio缓存 清理Gradle缓存 重新安装的 IDE 文件- 删除 .idea 文件夹 重新启动Android Studio。 Android Studio关于: build.gradle(模块:应用程序) MainActiv
以下是将使用此库的其他项目的文件 请注意: > 此库作为模块项目运行良好, 以下是我目前面临的流程和问题 > 我正在开发一个与特定条形码扫描器硬件通信的库的沙箱版本,因为开发人员不一定拥有他们将使用库的沙箱版本的硬件,该版本允许开发人员将其设备摄像机用作条形码扫描器, 我们希望开发人员从提供的中提取文件和并使用它们中的任何一个