和
1 回答
JZY3D
如果您在https://github.com/jzy3d/jzy3d-api检查库的存储库,您将看到可以使用的不同可能的工件。既然你用#javafx 标记了你的问题,我猜你需要jzy3d-javafx
.
如果您在Maven 存储库中搜索它,您将找到可用的最新版本 (1.0.2),并且还表明该工件不能从 MavenCentral 获得,但可以从jzy3D 版本库获得。
因此,在您的构建 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 存储库运行 JavaFX 演示的结果:
但是,我无法在 Java 11 上运行它,因为一些导致运行时异常的非法反射操作:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.jogamp.common.os.NativeLibrary$3 (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$3
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(这不是一个好兆头......)。
表面绘图仪
这是存储库链接:https ://github.com/ericaro/surfaceplotter ,您可以在 MavenCentral 上找到它:https ://mvnrepository.com/artifact/net.ericaro/surfaceplotter/2.0.1
但是,这是 Swing 的一个非常旧的版本,所以也许您可以设法将它包含在 SwingNode 中。
JavaFX 替代品
如果您想使用在 Java 11+ 上运行的纯 JavaFX 3D 绘制表面,您也可以使用SurfacePlotMesh
FXyz库。
这个问题3D surface JavaFX有一个关于如何使用它的示例。
你的构建应该是这样的:
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'