我在Windows 10上安装了Java SE Development Kit 16.0.2,看起来Java二进制文件已经安装到C:Program FilesCommon FilesOracleJavajavapath
上了。
我想安装BouncyCastle作为加密服务提供商,这样做我想我需要把Jar文件在java-home/jre/lib/ext/目录。在C:Program FilesCommon FilesOracleJavajavapath
上没有jre目录,也没有lib目录。
那么我把Jar文件放在哪里呢?
简短的回答:对于你运行的每个应用,你都显式地设置了类路径。你只需要确保充气城堡的罐子在里面。
但是,没有bootclasspath吗?
是的;它含有像java.lang.String
这样的物质。在没有黑客行为的情况下,您无法更改JDK,使其引导类路径上的内容超过标准集。你不会想要这种粗俗的。
扩展机制如何?
已不存在
那么CLASSPATH环境变量呢?
过去时代的遗迹。所有java应用程序都是通过显式指定类路径的启动器、ide或构建工具启动的(在这种情况下,CLASSPATH
会忽略env变量),或者通过启动jar启动,jar会在其清单中定义自己的类路径,同样,CLASSPATH
也会被忽略。Java仍然支持CLASSPATH环境变量。但是,任何使用JVM运行的应用程序都不应该使用它。Java支持java.util.Vector
,即使在jdk16中也是如此。不代表你应该用它
但是我想要一个java应用程序,我没有写使用bc。
这通常是不容易做到的。我们回到一些相当具体的hack。
如何制作一个使用bc的jar ?
查看jar清单中的Class-Path
条目是如何工作的。你可以在你的zip文件中与你的应用程序(或有一个安装程序)一起发布bc jar,这样当你运行你的应用程序时,它就会和你的主应用程序在同一个目录下。你所需要的只是在你的jar清单中的Class-Path: thatbcjar.jar
,它就会被使用(并且这个jar是相对于应用程序jar所在的目录进行解析的,所以不管你启动java jar时的工作目录是什么)。