如何在 Intellij idea 和 gradle 和 javafx 中使用曲面绘图仪或 jzy3d

how to use surface plotter or jzy3d with Intellij idea and gradle and javafx

我无法连接上述任何库。 这是我的项目文件夹:

build.gradle 文件,

导入错误图片

IDEA 的项目结构对话框

JZY3D

如果您在 https://github.com/jzy3d/jzy3d-api 查看库的存储库,您将看到可以使用的不同可能工件。由于您使用 #javafx 标记了您的问题,我猜您需要 jzy3d-javafx.

如果您在 Maven repository, you will find the latest version available (1.0.2), and also an indication that this artifact is not available from MavenCentral, but from the jzy3D releases 存储库中搜索它。

因此,在您的构建中 gradle 您将需要包含该存储库和该依赖项:

plugins {
  id 'application'
}

repositories {
    mavenCentral()
    maven {
        url "http://maven.jzy3d.org/releases"
    }
}

dependencies {
    implementation 'org.jzy3d:jzy3d-javafx:1.0.2'
}

mainClassName = "your.Main"

这是 运行从 jyz3d repository 获得 JavaFX 演示的结果:

但是,我无法在 Java 11 上 运行,因为某些导致 运行 时间异常的非法反射操作:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.jogamp.common.os.NativeLibrary (file:/Users/<user>/.gradle/caches/modules-2/files-2.1/org.jogamp.gluegen/gluegen-rt/2.3.2/edc35ccfc13d4a4ad02c50d580874c18bf48bbef/gluegen-rt-2.3.2.jar) to method java.lang.ClassLoader.findLibrary(java.lang.String)
WARNING: Please consider reporting this to the maintainers of com.jogamp.common.os.NativeLibrary
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

所以这对我来说只有 运行 Java 8(这不是一个好兆头...)。

曲面绘图仪

这是存储库 link:https://github.com/ericaro/surfaceplotter, and you can find it on MavenCentral: https://mvnrepository.com/artifact/net.ericaro/surfaceplotter/2.0.1

但是,这是一个非常老的 Swing 版本,所以也许您可以设法将它包含在 SwingNode 中..

Java外汇替代品

如果您想在 Java 11+ 上使用纯 JavaFX 3D、运行ning 绘制曲面,您也可以使用 SurfacePlotMesh from the FXyz library.

这个问题 有一个关于如何使用它的示例。

你的构建应该是这样的:

plugins {
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.8'
}

repositories {
    mavenCentral()
    maven {
        url = "http://maven.jzy3d.org/releases"
    }
}

dependencies {
    implementation 'org.fxyz3d:fxyz3d:0.5.2'
}

javafx {
    modules = [ 'javafx.controls' ]
}

mainClassName = 'your.Main'