好吧,我想通了。
如何javax.vecmath
在 Mac OS(11.5.1) 和 Java(16.0.2)中使用
我给出的描述包括我为什么做这些事情,如果你只是想要一个答案,请跳到底部的 TLDR。
第 1 步:下载最新版本的Java3D
这包含vecmath
,以及j3dcore
和j3dutils
。它将下载一个 .zip 文件。解压缩文件,它会展开到一个新目录中,其中包含另一个 .zip 文件j3d-jre.zip
。解压缩j3d-jre.zip
,它会展开成一个目录库。在 lib 内部将是一个子目录 ext,其中包含三个 .jar 文件:j3dcore.jar
、j3dutils.jar
和vecmath.jar
. 你可以把它们放在任何地方,只要确保你跟踪它们的位置(我把它们放在~/Library/Java/Extensions,这个位置在硬盘上,需要管理员密码才能做任何事情——使用
sudo unzip /path/to/j3d-jre.zip
如果你在 shell 中做事)。您可以将ext
目录放入,JAVA_HOME/lib/
但在 Java 6 之后,这将导致问题。
第 2 步:改变CLASSPATH
Java 不知道如何查找vecmath.jar
,因此您必须指定它。
选项 1:CLASSPATH
使用每个 shell 命令指定
最简单的版本是使用
javac -cp ".:/path/to/vecmath.jar:" MyMainProgram.java
编译和
java -cp ".:/path/to/vecmath.jar:" MyMainProgram
运行程序(你也可以替换-cp
为-classpath
它会做同样的事情)
此选项永远不会破坏您的CLASSPATH
,但您-cp
每次编译和运行导入javax.vecmath
.
选项 2:CLASSPATH
在每个新的终端窗口中指定
比 更持久一点-cp
,您可以定义CLASSPATH
使任何更改仅发生在该终端窗口中。使用此表格:
export CLASSPATH=".:/path/to/vecmath.jar:"
现在当你打电话
javac MyMainProgram.java
java MyMainProgram
Java 将看到这CLASSPATH
一点.:/path/to/vecmath.jar
,并且所有内容都将编译和运行而无需添加-cp
命令。
此选项的主要缺点是,如果您CLASSPATH
再次更新,您必须记住添加以前的CLASSPATH
(您可以随时查看echo $CLASSPATH
)
选项 3:永久添加CLASSPATH
到终端
在终端中输入以下内容:
open ~/.bash_profile
这将打开一个窗口,其中可能有也可能没有代码。无论任何预先存在的代码,滚动到底部并添加
export CLASSPATH=".:/path/to/vecmath.jar:"
此选项将永久保留CLASSPATH
在所有终端窗口中,或者直到您更改它(使用上述任何方法)。
TLDR
下载适用于 macOS 的Java3D
解压java3d-1_5_1-macosx.zip
并打开它创建的目录
解压j3d-jre.zip
并打开新目录/lib/
和子目录/lib/ext/
将vecmath.jar
、j3dcore.jar
和移动j3dmath.jar
到~/Library/Java/Extensions(这需要管理员密码)或任何其他位置
在终端中运行以下行:
open ~/.bash_profile
转到底部并添加以下内容:
export CLASSPATH="/path/to/vecmath.jar:$CLASSPATH"
导入javax.vecmath.*
到您想要的任何 .java 程序