Java'ext'目录与-Xbootclasspath / p:

时间:2012-02-23 22:26:31

标签: java

我想在Java 6中使用JSR166工具。所以我已经下载了jar。

我想让这个过程(相对)无痛。我很困惑地发现将它添加到Mac的JDK / JRE(或/ Library / Java / extensions)中的ext目录中不起作用。

只有-Xbootclasspath才能解决问题。

这是为什么? exts是以某种方式更狭义地定义的吗?

1 个答案:

答案 0 :(得分:1)

将JAR安装到扩展目录中使它们可以通过-Xbootclasspath选项使用它们。在加载顺序方面,你有这个:

  1. Bootstrap类路径。这由JVM提供程序控制,并且 可以使用(非标准)-Xbootclasspath命令覆盖 行选项。
  2. 扩展文件夹 - 此文件夹中的JAR已加载并作用于其范围 与bootstrap类相同的可用性。
  3. 用户类 - 用户类从通过定义的源加载 类路径属性。默认情况下由此指定 CLASSPATH环境变量,但可以被覆盖 标准-cp命令行选项。
  4. 在bootstrap类路径中找到的任何类或作为扩展名加载的类应立即可用于您的程序。

    您可以在Mac上轻松验证。编译以下内容:

    public class Test {
        public static void main(String[] args) {
            System.out.println("Hello World");
        }
    }
    

    在命令控制台中:

    javac Test.java
    jar cvf test.jar Test.class
    cp test.jar /Library/Java/Extensions
    rm Test.class test.jar
    java Test
    

    当然,结果将'Hello World'打印到您的控制台。

    检查以确保从JAR调用正确的类,并确保它实际放在右侧扩展文件夹中。