【问题标题】:Gradle Error while installing RichTextFX with Java 8使用 Java 8 安装 RichTextFX 时出现 Gradle 错误
【发布时间】:2019-07-17 15:40:39
【问题描述】:

我正在尝试使用RichTextFX,但是当我尝试使用它时,我得到了一个很长的错误(见下文)。我正在使用 IntelliJ IDEA 2018.3.4、JDK 8 和 Gradle 版本 4.8.1。我目前尝试安装它的方法是我下载了 jar (richtextfx-0.9.2.jar) 并将其移动到项目中的文件夹中。然后我将 jar 添加为库并保存。然后我转到我的 JavaFX 文件,并新建一个 Code AreaCodeArea c = new CodeArea(); 这将导致一个大错误。我认为 gradle 安装有错误。我以前没用过,所以我很新。

我能够使用实际文件(当未编译成 JAR 时)来运行提供的演示。这是在不同的项目中,并且在创建项目时将 gradle 库添加为外部库。然而,我正在处理的项目没有这些额外的外部库。

我们将不胜感激任何支持。谢谢!

有例外情况:

  • java.lang.reflect.InvocationTargetException
  • java.lang.RuntimeException:应用程序启动方法中的异常
  • java.lang.NoClassDefFoundError: org/fxmisc/flowless/Virtualized
  • java.lang.ClassNotFoundException: org.fxmisc.flowless.Virtualized

测试java代码

package demo.javafx;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import org.fxmisc.richtext.CodeArea;


public class TestRichTextFX extends Application {

    @Override
    public void start(Stage primaryStage) {

        Pane root = new Pane();
        Scene scene = new Scene(root);

        CodeArea c = new CodeArea();


        primaryStage.setAlwaysOnTop(true);
        primaryStage.setTitle("");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

【问题讨论】:

    标签: java gradle javafx


    【解决方案1】:

    您不能只下载 RichTextFX 的 JAR 并将其添加到您的项目中。 RichTextFX 本身具有仅下载 JAR 不会提供的依赖项。在您的情况下,您会看到一条错误消息,指出缺少 Flowless 依赖项。但是,您不必自己下载 JAR 文件——这就是 Gradle 的用途。您只需要将依赖项添加到构建脚本中; RichTextFX 的 README 提供了an example1

    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation 'org.fxmisc.richtext:richtextfx:0.9.2'
    }
    

    Gradle 将为您引入所有需要的依赖项。如需更多信息,请参阅Introduction to Dependency Management

    请注意,这样做您不必在 IntelliJ 中声明库。如果您的项目设置为 Gradle 项目,那么 IntelliJ 将看到在您的构建脚本中声明的依赖项并将它们添加到项目中。修改构建脚本后,您可能必须“导入更改”。这些help pages 提供了更多信息。


    1.该示例使用compile,但Gradle 推荐implementation——至少对于较新的版本(compile 已弃用)。请注意,Android 项目可能仍然使用compile,尽管我不确定。

    【讨论】:

    • 非常感谢,我成功了!快速跟进问题,我添加的其他库是否应该移动到 gradle?这会被认为是更好的风格吗?
    • 所有依赖项都应该在 Gradle 中声明。请注意,Gradle 不仅仅是一个依赖管理工具,而是一个成熟的构建工具;它需要知道依赖项才能编译和测试您的项目。在可能的情况下,您还应该将构建任务委托给 Gradle,而不是直接使用 IntelliJ(或其他 IDE)。您仍然会使用 IDE,但 IDE 应该在“幕后”使用 Gradle。此外,如果您的依赖项在存储库中不可用,例如 Maven Central,请参阅this question
    • 如果您依赖另一个 subproject,请参阅 this question 和/或 this question
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 2019-07-19
    • 1970-01-01
    相关资源
    最近更新 更多