vecmath.jar 在 MacOS(11.5.1) 中应该放在哪里
Where should vecmath.jar go in MacOS(11.5.1)
序言:因此,这一切都是从尝试使用 javax.vecmath.Vector2d
开始的。我没有 javax.vecmath
所以我花了一点时间试图得到它,发现我需要下载 Java3D.
经过长时间尝试下载 Java3D for Java(版本 16.0.2),我最终将其与 vecmath.jar 文件一起登陆 [=14] =].这摆脱了 error: package javax.vecmath does not exist
错误消息。
然后,我收到了消息
<JAVA_HOME>/lib/ext exists, extensions mechanism no longer supported; Use -classpath instead.
.Error: Could not create the Java Virtual Machine.
这也不允许我在 shell 中使用任何 java 命令。
经过一些研究,我得出的结论是要移动(通过 Finder select 并拖动)j3dutils.jar
、vecmath.jar
和 j3dcore.jar
到 lib
并删除 lib/ext
目录。我已经摆脱了 <JAVA_HOME>/lib/ext exists
问题,但又回到了 error: package javax.vecmath does not exist
.
我什至不知道该怎么办。我只想使用 javax.vecmath。我会以完全错误的方式解决这个问题吗?我怎样才能让它工作?
jar文件可以放在你想放的地方,移动到你项目的lib文件夹下就好了。真正的问题是你需要 classpath 来指向它。
Here 是一个完整的解释。
如果您是从命令行 运行 不需要设置 classpath 变量,您可以在 java 命令中提供它。应该是这样的:
java -cp lib/vecmath.jar Example
这假定您正在处理的程序已被编译成名为 Example.class 的 class 文件。如果您的主要方法在一个包中,您将需要完全限定 class 名称,因此它可能看起来像:
java -cp lib/vecmath.jar com.demo.Example
您可以在 class 路径中列出多个 jar 文件,以冒号 (:) 分隔。
您也可以在命令行中调用以下命令寻求帮助:
java -h
好的,我明白了。
如何在 Mac OS(11.5.1) 和 Java(16.0.2)
中使用 javax.vecmath
我给出的描述包括我为什么做事,如果您只想得到答案,请跳至底部的 TLDR。
第一步:下载最新版本Java3D
这包含 vecmath
,以及 j3dcore
和 j3dutils
。它将下载一个 .zip 文件。解压缩文件,它将展开到一个新目录中,其中包含另一个 .zip 文件,j3d-jre.zip
。解压缩 j3d-jre.zip
,它会扩展到一个目录 lib。 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:为每个 shell 命令指定 CLASSPATH
最简单的版本是使用
javac -cp ".:/path/to/vecmath.jar:" MyMainProgram.java
编译和
java -cp ".:/path/to/vecmath.jar:" MyMainProgram
到运行程序(你也可以用-classpath
替换-cp
,它会做同样的事情)
此选项永远不会破坏您的 CLASSPATH
但您还必须在每次编译时包含 -cp
命令和 运行 导入 javax.vecmath
的程序.
选项 2:为每个新终端指定 CLASSPATH
window
比 -cp
更持久一点,您可以定义 CLASSPATH
这样任何更改只会在该终端 window 中发生。使用这种形式:
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
这将打开一个 window,其中可能有也可能没有代码。不管任何预先存在的代码,滚动到底部并添加
export CLASSPATH=".:/path/to/vecmath.jar:"
此选项将永久保留所有终端 windows 中的 CLASSPATH
或直到您更改它(使用上述任何方法)。
TLDR
下载 Java3D for macOS
解压缩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程序
序言:因此,这一切都是从尝试使用 javax.vecmath.Vector2d
开始的。我没有 javax.vecmath
所以我花了一点时间试图得到它,发现我需要下载 Java3D.
经过长时间尝试下载 Java3D for Java(版本 16.0.2),我最终将其与 vecmath.jar 文件一起登陆 [=14] =].这摆脱了 error: package javax.vecmath does not exist
错误消息。
然后,我收到了消息
<JAVA_HOME>/lib/ext exists, extensions mechanism no longer supported; Use -classpath instead.
.Error: Could not create the Java Virtual Machine.
这也不允许我在 shell 中使用任何 java 命令。
经过一些研究,我得出的结论是要移动(通过 Finder select 并拖动)j3dutils.jar
、vecmath.jar
和 j3dcore.jar
到 lib
并删除 lib/ext
目录。我已经摆脱了 <JAVA_HOME>/lib/ext exists
问题,但又回到了 error: package javax.vecmath does not exist
.
我什至不知道该怎么办。我只想使用 javax.vecmath。我会以完全错误的方式解决这个问题吗?我怎样才能让它工作?
jar文件可以放在你想放的地方,移动到你项目的lib文件夹下就好了。真正的问题是你需要 classpath 来指向它。
Here 是一个完整的解释。
如果您是从命令行 运行 不需要设置 classpath 变量,您可以在 java 命令中提供它。应该是这样的:
java -cp lib/vecmath.jar Example
这假定您正在处理的程序已被编译成名为 Example.class 的 class 文件。如果您的主要方法在一个包中,您将需要完全限定 class 名称,因此它可能看起来像:
java -cp lib/vecmath.jar com.demo.Example
您可以在 class 路径中列出多个 jar 文件,以冒号 (:) 分隔。
您也可以在命令行中调用以下命令寻求帮助:
java -h
好的,我明白了。
如何在 Mac OS(11.5.1) 和 Java(16.0.2)
中使用javax.vecmath
我给出的描述包括我为什么做事,如果您只想得到答案,请跳至底部的 TLDR。
第一步:下载最新版本Java3D
这包含 vecmath
,以及 j3dcore
和 j3dutils
。它将下载一个 .zip 文件。解压缩文件,它将展开到一个新目录中,其中包含另一个 .zip 文件,j3d-jre.zip
。解压缩 j3d-jre.zip
,它会扩展到一个目录 lib。 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:为每个 shell 命令指定 CLASSPATH
最简单的版本是使用
javac -cp ".:/path/to/vecmath.jar:" MyMainProgram.java
编译和
java -cp ".:/path/to/vecmath.jar:" MyMainProgram
到运行程序(你也可以用-classpath
替换-cp
,它会做同样的事情)
此选项永远不会破坏您的 CLASSPATH
但您还必须在每次编译时包含 -cp
命令和 运行 导入 javax.vecmath
的程序.
选项 2:为每个新终端指定 CLASSPATH
window
比 -cp
更持久一点,您可以定义 CLASSPATH
这样任何更改只会在该终端 window 中发生。使用这种形式:
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
这将打开一个 window,其中可能有也可能没有代码。不管任何预先存在的代码,滚动到底部并添加
export CLASSPATH=".:/path/to/vecmath.jar:"
此选项将永久保留所有终端 windows 中的 CLASSPATH
或直到您更改它(使用上述任何方法)。
TLDR
下载 Java3D for macOS
解压缩
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程序